禁用所有复选框

时间:2009-10-13 14:20:36

标签: jquery

以下代码正常但1错误

$(document).ready(
function() {


 $("#myCheckboxes input[type='checkbox']").change(function() {
    var checked = $("#myCheckboxes input[type='checkbox']:checked").length;

        if(checked == 4){
           $("#myCheckboxes input[type='checkbox']")
            .attr('disabled',true)
            .find(':checked')
            .attr('disabled',false)
    } else {
        $("#myCheckboxes input[type='checkbox']").attr('disabled',false);
    }


    });
 });

选择后变为4全部复选框变为禁用,即使选中一个,但我不想禁用所选的复选框。

由于

3 个答案:

答案 0 :(得分:11)

试试这个

$("#myCheckboxes :checkbox:not(:checked)").attr('disabled', true)

而不是

$("#myCheckboxes input[type='checkbox']")
    .attr('disabled',true)
    .find(':checked')
    .attr('disabled',false)

答案 1 :(得分:3)

您应该注意,这不是启用/禁用DOM元素的方法 考虑:

<input type="checkbox" disabled='true' />
<input type="checkbox" disabled='false' />

与看起来相反,因为它们具有disabled属性,两个控件都被禁用!
这是为了兼容,当HTML有<input type="checkbox" disabled />时 - 忽略该值。

禁用元素的常见原因是

<input type="checkbox" disabled='disabled' />

因此,使用jQuery执行此操作的正确方法是:

$("input:checkbox").attr('disabled', 'disabled'); //disable
$("input:checkbox").removeAttr('disabled'); //enable

答案 2 :(得分:0)

我已经调整了我对原始问题的答案(你奇怪地将其作为另一个问题发布在SO上)。我有一个小错字,在你的评论之后已经修复了:set total number of checkbox in array

相关问题