我每行有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'));
}
});
});
问题是,一旦我点击“全部”,残疾人仍然会被检查。我究竟做错了什么?提前谢谢。
答案 0 :(得分:15)
这有效:
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'));
}
});
答案 1 :(得分:10)
检查除禁用以外的所有内容
$('input:checkbox:not(:disabled)').attr('checked','checked');
取消选中除禁用以外的所有内容
$('input:checkbox:not(:disabled)').removeAttr('checked');
答案 2 :(得分:5)
使用jQuery的“:disabled”过滤器,而不是访问“禁用”属性。
答案 3 :(得分:3)
$('input[name=all]').click(function(){
var classn = $(this).attr('class');
$('.'+classn+':not(:disabled)').attr('checked', $(this).is(':checked'));
});
只为每一行分配一个统一的类,比如row_one,row_two等等。
答案 4 :(得分:2)
试试这个:
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
答案 5 :(得分:1)
使用切换按钮“检查全部/取消选中所有”而不是“全部”的复选框可能是更好的UI。所以1个按钮+ 4个复选框而不是5个复选框。那么你就不必搞乱了。
答案 6 :(得分:1)
我遇到了同样的问题,但我设法解决了这个问题。我认为解决方案很好。这里:
$("INPUT[@name="+children+"][type='checkbox']").attr('checked', $(parent).is(':checked'));
$("INPUT[@name="+children+"][type='checkbox'][disabled]").attr('checked', false);
我认为这很容易理解。我猜不需要进一步解释:P 但请不要犹豫,问:)
答案 7 :(得分:1)
我知道这是一个旧帖子,但我还有另一个相似的内容,我想检查所有未禁用的复选框。但是,我还有其他一些我不希望受此影响的复选框,因此我只需要定位包含它们的<div>
:
$(function () {
$('#checkAll').click(function () {
$('#completed_modules').find(':checkbox:not(:disabled)').attr('checked', this.checked);
});
});
像魅力一样工作。享受,我希望有人觉得这很有用。