Jquery checkbox - не проверять, отключено ли оно
У меня есть 5 флажков в каждой строке. Первый - "ВСЕ". Я пытаюсь проверить, отключен ли кто-либо из других. Поэтому, если кто-то нажимает на флажок "ВСЕ", мне нужно убедиться, что отключенные не отмечены. Это то, что у меня есть:
("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'));
}
});
});
Дело в том, что отключенные все еще проверяются, как только я нажимаю "ALL". Что я делаю не так? спасибо заранее.
Ответы
Ответ 1
это работает:
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'));
}
});
Ответ 2
Чтобы проверить все, кроме отключенных
$('input:checkbox:not(:disabled)').attr('checked','checked');
В снимите флажок, кроме отключенного
$('input:checkbox:not(:disabled)').removeAttr('checked');
Ответ 3
Использовать фильтр jQuery ": disabled" вместо доступа к атрибуту "disabled".
Ответ 4
umm, вероятно, сделаю следующее:
$('input[name=all]').click(function(){
var classn = $(this).attr('class');
$('.'+classn+':not(:disabled)').attr('checked', $(this).is(':checked'));
});
просто назначьте единый класс для каждой строки, скажем row_one, row_two и т.д.
Ответ 5
Попробуйте следующее:
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 - это идентификатор мастер-флажка (в котором говорится, что Check/Uncheck All...
Надеюсь, это поможет кому-то! Ричард Ревероон
Ответ 6
Возможно, лучше использовать пользовательский интерфейс для переключения "все/снять отметку", а не флажок "ВСЕ". Так что 1 кнопка + 4 флажка вместо 5 флажков. Тогда вам не придется возиться с отключением.
Ответ 7
У меня такая же проблема, но мне удалось ее решить, и я думаю, что решение в порядке. Здесь:
$("INPUT[@name="+children+"][type='checkbox']").attr('checked', $(parent).is(':checked'));
$("INPUT[@name="+children+"][type='checkbox'][disabled]").attr('checked', false);
Я думаю, что это легко понять. Не нужно объяснять дальше, я думаю: P
Но, пожалуйста, не стесняйтесь спрашивать:)
Ответ 8
Я знаю, что это старый пост, но у меня было другое подобное занятие, где я хотел проверить все флажки, которые не были отключены. Однако у меня также есть несколько других флажков, которые мне не нужны, поэтому мне нужно было указать только те <div>
, которые содержали их:
$(function () {
$('#checkAll').click(function () {
$('#completed_modules').find(':checkbox:not(:disabled)').attr('checked', this.checked);
});
});
Работает как шарм. Наслаждайтесь, я надеюсь, что кто-то найдет это полезным.