禁用所有复选框

以下代码工作正常,但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全部复选框变为禁用甚至选中一个,但我不想禁用所选的复选框。

谢谢

试试这个

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

代替

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

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

   

与它看起来相反,因为它们具有disabled属性, 两个控件都被禁用!
这是为了兼容,当HTML – 忽略该值。

禁用元素的常见原因是

  

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

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

我已经调整了你对原始问题的答案(你奇怪地将其作为另一个问题发布在SO上)。 我有一个小错字,它已经修复后你的评论: 在数组中设置复选框的总数