jQuery change()应该表现得那样吗?

时间:2012-03-30 00:21:24

标签: jquery html

我有两个html单选按钮和textarea。我基本上想要在选择是时启用textarea,否则禁用它。

<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');

        });

3 个答案:

答案 0 :(得分:2)

你有2个id与你的问题相同。

这不是W3C有效的,在这种情况下jQuery只会继续第一个id。

答案 1 :(得分: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');

    });

答案 2 :(得分:1)

这是你应该得到正确值的方法:

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

由于多个元素具有相同的类和名称,因此您应使用:checked从正确的元素中获取val()