2012-11-13 40 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