选中除禁用复选框以外的所有复选框

时间:2013-05-08 19:12:56

标签: jquery

我希望选择所有checkbox元素,以及残疾人

这是我的HTML

<input id="chkSelectAll" class="checkbox" type="checkbox" />Select All

<div id="ContentPlaceHolder1_listItem_pnlDis_0">
    <input id="checkApproved" type="checkbox" name="checkApproved" checked="checked" disabled="disabled">
</div>
<div id="ContentPlaceHolder1_listItem_pnlDis_8" class="dis">
    <input id="checkApproved" type="checkbox" name="ctl00$ContentPlaceHolder1$listItem$ctrl8$checkApproved">
</div>

的jQuery

$('#chkSelectAll').click(function () {
    var checked_status = this.checked;
    //   alert(checked_status);
    $('div#item input[type=checkbox]').each(function () {
        this.checked = checked_status;
    });
})

它正在选择所有checkbox元素,但我想跳过禁用的元素。

我该怎么做?

8 个答案:

答案 0 :(得分:17)

使用not()排除具有禁用属性的内容。

$('#chkSelectAll').click(function () {
    var checked_status = this.checked;

    $('div#item input[type=checkbox]').not("[disabled]").each(function () {
               this.checked = checked_status;
    });
});

更简洁

$('#chkSelectAll').click(function () {
    var checked_status = this.checked;
    $('div#item input[type=checkbox]').not(":disabled").prop("checked", checked_status);
});

答案 1 :(得分:2)

$('#chkSelectAll').click(function () {
    var checked_status = this.checked;

    $('div#item input[type=checkbox]').each(function () {
           if (!this.disabled) 
               this.checked = checked_status;
    });
});

或没有每个循环:

$('#chkSelectAll').on('click', function() {
    var checked_status = this.checked;

    $('div#item input[type=checkbox]').prop('checked', function(i, prop) {
         return this.disabled ? prop : checked_status;
    });
});

答案 2 :(得分:2)

它可以短到

$('#chkSelectAll').click(function() {
    $('div#item :checkbox:not(:disabled)').prop('checked', this.checked);
});

http://jsfiddle.net/hRc4a/

答案 3 :(得分:0)

    $('#chkSelectAll').click(function () {
        var checked_status = this.checked;
        //   alert(checked_status);
        $('div#item input[type=checkbox]').each(function () {
             if(!$(this).is(':disabled'){
                 this.checked = checked_status;
             }

        });
    })

答案 4 :(得分:0)

或者您也可以使用:not selector,如下所示:

$('#chkSelectAll').click(function () {
    var checked_status = this.checked;
    $('div#item input[type=checkbox]:not(:disabled)').each(function () {
               this.checked = checked_status;
    });
});

答案 5 :(得分:0)

我个人建议:

$('#chkSelectAll').change(function(){
    var self = this;
    $('input:checkbox').filter(function(){
        return !this.disabled
    }).prop('checked',self.checked);
});

JS Fiddle demo

参考文献:

答案 6 :(得分:0)

检查除禁用

以外的所有内容
b

取消选中除禁用

以外的所有内容
$('input:checkbox:not(:disabled)').attr('checked', 'checked');

请参阅以下链接,了解更多详情http://www.infinetsoft.com/Post/How-to-check-all-except-disabled/18#.V00SYfl97IU

答案 7 :(得分:0)

如果您要选择除禁用行以外的所有行,我个人会建议此解决方案。

只需将此代码添加到复选框输入(HTML)

onclick="$('input[name*=\'selected\']:not(:disabled)').prop('checked',this.checked);"