复选框更改时Jquery禁用元素

时间:2012-06-01 05:44:01

标签: jquery select checkbox

<input type="checkbox" id="dw"/>

<select id="oo">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>

$('#dw').change(function() {
    if ($(this).is(':checked')) {
        $('#oo').removeAttr('disabled');
    } else {
        $('#oo').attr('disabled', true);
    }
}

我看不出错误在哪里。

http://jsfiddle.net/f8jGU/

4 个答案:

答案 0 :(得分:1)

$('#dw').on('change', function() {

    // If this.checked = true, then select will enabled else disabled
    // instead of attr() use prop()
    $('#oo').prop('disabled', !this.checked);
});

<强> Working sample

详细了解 .prop()

您可以通过以下链接获得巨额收益:

<强> .prop() vs .attr()

答案 1 :(得分:1)

工作演示 http://jsfiddle.net/2gbHQ/5/

良好阅读 http://api.jquery.com/prop/

  

.prop()方法仅获取第一个元素的属性值   在匹配的集合中。它为属性的值返回undefined   尚未设置,或匹配的集合没有元素。要得到   单独使用每个元素的值,使用循环结构   作为jQuery的.each()或.map()方法。

Jquery代码

$('#dw').change(function() {
    if ($(this).is(':checked')) {
        $('#oo').prop('disabled', false);
    } else {
        $('#oo').prop('disabled', true);
    }
});​

<强> HTML

<input type="checkbox" id="dw" />

<select id="oo" disabled="true">
    <option>a</option>
    <option>b</option>
    <option>c</option>
</select>
​

答案 2 :(得分:0)

您的代码也有效,只是您错过了关闭change功能。请参阅更新的小提琴http://jsfiddle.net/f8jGU/1/

答案 3 :(得分:0)

.prop()https://api.jquery.com/prop/)的jQuery文档中解释了代码无法运行的原因:

  

属性通常会影响DOM元素的动态状态   更改序列化的HTML属性。例子包括价值   输入元素的属性,输入的禁用属性和   按钮,或复选框的选中属性。 .prop()方法   应该用来设置禁用和检查而不是.attr()   方法。 .val()方法应该用于获取和设置   值。

1  $( "input" ).prop( "disabled", false );
2  $( "input" ).prop("checked", true );
3  $( "input" ).val( "someValue" );
     

重要提示:不应使用.removeProp()方法将这些属性设置为false。一旦删除了本机属性,它就不可能   又补充道。有关详细信息,请参阅.removeProp()