2012-03-30 26 views
1

我有這兩個html單選按鈕和textarea。我基本上想在選擇Yes時啓用textarea,否則禁用它。jQuery的變化()應該表現得如此嗎?

<input type='radio' id='comment' name='comment' value='Yes'>Yes 
<input type='radio' id='comment' name='comment' value='No' checked="checked">No 

<textarea id='writehere' name='writehere' cols='25' rows='2'></textarea> 

下面是我的jQuery。該命令只有當我把它回值號出現,但我希望在每次執行這些命令的「註釋」是變化的,不管是還是第

$('#writehere').attr('disabled','disabled'); 

$('#comment').change(function(){ 
     if ($('#comment').val() == 'No') 
      $('#writehere').attr('disabled','disabled'); 

     if ($('#comment').val() == 'Yes') 
      $('#writehere').removeAttr('disabled'); 

     }); 

回答

2

你有2個ID是相同那是你的問題。

這不是W3C的有效,在這種情況下,jQuery將只處理第一個id。

+0

哦...非常感謝。這是一個階級,我很快就會改變它而不會思考。非常感謝。問候 – alexx0186 2012-03-30 00:25:50

+1

當然很高興幫助您獲得名稱以及elt) – 2012-03-30 00:28:43

2

這就是jQuery's change的正確用法。但是,您違反了HTML規則,因爲您有兩個具有相同ID的元素。也許你可以把它改成這樣:

<input type='radio' class='comment-handler' name='comment' value='Yes'>Yes 
<input type='radio' class='comment-handler' name='comment' value='No' checked="checked">No 

$('.comment-handler').change(function(){ 
    if ($('.comment-handler').val() == 'No') 
     $('#writehere').attr('disabled','disabled'); 

    if ($('.comment-handler').val() == 'Yes') 
     $('#writehere').removeAttr('disabled'); 

    }); 
+0

是的,這是問題所在。非常感謝您的回覆。 Regards – alexx0186 2012-03-30 00:27:52

1

這是你應該如何得到正確的值:

$('input:radio[name=comment]:checked').val() 

由於幾個元素具有相同的類名,你應該使用:checked得到val()從正確的元素。

+0

嗨,感謝您的回覆。我從來沒有想過「:檢查」。謝謝你的提示。問候 – alexx0186 2012-03-30 00:42:01