jquery复选框问题 – 不要检查它是否被禁用
我每行有5个复选框。 第一个是’ALL’。 我试图看看是否有其他人被禁用。 因此,如果有人点击“全部”复选框,我需要确保未选中已禁用的复选框。 这就是我所拥有的:
("input[name^=all_]").each(function() { var input = $(this); var name = input.attr('name'); var num = /\d+$/.exec(name)[0]; $(this).click(function() { if ($('"#G"+num').attr('disabled',false)) { $("#G"+num).attr('checked', $("#all_"+num).is(':checked')); } if ($('"#E"+num').attr('disabled',false)) { $("#E"+num).attr('checked', $("#all_"+num).is(':checked')); } if ($('"#W"+num').attr('disabled',false)) { $("#W"+num).attr('checked', $("#all_"+num).is(':checked')); } if ($('"#S"+num').attr('disabled',false)) { $("#S"+num).attr('checked', $("#all_"+num).is(':checked')); } });
});
问题是,一旦我点击“全部”,残疾人仍然会被检查。 我究竟做错了什么? 提前致谢。
这工作:
if ( !$("#G"+num).is(':disabled') ) { $("#G"+num).attr('checked', $("#all_"+num).is(':checked')); } if ( !$("#E"+num).is(':disabled')) { $("#E"+num).attr('checked', $("#all_"+num).is(':checked')); } if ( !$("#W"+num).is(':disabled') ) { $("#W"+num).attr('checked', $("#all_"+num).is(':checked')); } if (!$("#S"+num).is(':disabled')) { $("#S"+num).attr('checked', $("#all_"+num).is(':checked')); } });
检查除禁用之外的所有内容
$('input:checkbox:not(:disabled)').attr('checked','checked');
取消选中除禁用之外的所有内容
$('input:checkbox:not(:disabled)').removeAttr('checked');
使用jQuery的“:disabled”filter而不是访问“disabled”属性。
嗯,我可能会这样做:
$('input[name=all]').click(function(){ var classn = $(this).attr('class'); $('.'+classn+':not(:disabled)').attr('checked', $(this).is(':checked')); });
只为每一行分配一个统一的类,比如row_one,row_two等等。
试试这个:
var all_checks = 0; $(document).ready(function(){ $("#all").click(function(){ $('input:checkbox:not(:disabled)').attr("checked",!(all_checks==1)); if (all_checks == 0){all_checks=1;} else {all_checks = 0;}; }); });
其中#all是主复选框的ID(表示检查/取消选中全部…
希望这有助于某人! Richard Reveron
使用切换按钮“检查所有/取消选中所有”而不是“全部”的复选框可能是更好的UI。 所以1个按钮+ 4个复选框而不是5个复选框。 那你就不必乱用了。
我有同样的问题,但我设法解决了它,我认为解决方案很好。 这里:
$("INPUT[@name="+children+"][type='checkbox']").attr('checked', $(parent).is(':checked')); $("INPUT[@name="+children+"][type='checkbox'][disabled]").attr('checked', false);
我觉得这很容易理解。 无需进一步解释,我猜:P但请不要犹豫:)
我知道这是一个旧post,但我还有另一个相似的内容,我想检查所有未禁用的复选框。 但是,我还有一些其他的复选框,我不希望受此影响,所以我需要只针对包含它们的
:
$(function () { $('#checkAll').click(function () { $('#completed_modules').find(':checkbox:not(:disabled)').attr('checked', this.checked); }); });
奇迹般有效。 享受,我希望有人觉得这很有用。