2012-11-13 44 views
3

我一直试图在FAQ无法使用jQuery禁用表单元素按照FAQ例如

禁止使用jQuery的表单元素,按照这里的例子是我尝试至今。

<script src="jquery-1.8.2.js"></script> 
<form name="myForm" action ="process.php" method ="post" > 
<p>Room type:<br /> 
<input type="radio" name="roomtype" value="mdorm" onClick="$('#roomnumber').attr('disabled','disabled')">Mixed Dorm<br> 
<input type="radio" name="roomtype" value="fdorm" onClick="$('#roomnumber').attr('disabled','disabled')">Female Dorm<br> 
<input type="radio" name="roomtype" value="room">Private Room<br> 
</p> 
<p>Room number<br /> 
<select name="roomnumber"> 
     <option value="1">1</option> 
     <option value="2">2</option> 
</select> 

但是,单击任何单选按钮都不会导致下拉列表被禁用。我已经基本上逐字跟踪了这个例子,所以我不确定我在这里出错了。

回答

0

你的jquery使用的id选择器#但你没有一个id属性。 <select id="roomnumber">应该帮助

1

您使用ID选择器,但是您的选择元件不具有ID属性:

<select id="roomnumber" name="roomnumber"> 

在jQuery 1.6的用于启用/禁用表单元素(或修改其它性质prop方法应该是用来代替attr方法,您的标记更改为:

<p>Room type:<br /> 
    <input type="radio" name="roomtype" value="mdorm">Mixed Dorm<br> 
    <input type="radio" name="roomtype" value="fdorm">Female Dorm<br> 
    <input type="radio" name="roomtype" value="room">Private Room<br> 
</p> 

而且你可以编写:

$(function(){ // document ready handler 
    $('input[name="roomtype"]').change(function(){ // listen to the change event 
     // disable the select element if value of radio group is not 'room' 
     $('#roomnumber').prop('disabled', this.value !== 'room') 
    }) 
}) 

http://jsfiddle.net/Er8zX/

0
<select name="roomnumber" id="roomnumber"> 

可能?

+0

考虑添加一些解释,为什么这解决了手头的问题,为什么它是比接受的答案更好的解决方案。 – Gijs