#jquery
#jquery
Вопрос:
Как я могу удалить "disabled='disabled'
атрибут кнопки отправки с помощью id='bla'
, если установлен хотя бы один флажок с class='check'
?
Если флажки не установлены, отключенный атрибут должен вернуться к кнопке отправки.
Ответ №1:
РЕДАКТИРОВАТЬ (11-01-2021) — Как указал @Janus Bahs Jacquet, начиная с jQuery 1.6.1, свойствами элементов следует управлять с использованием .prop()
метода вместо .attr()
method.
$('.check').change(function() {
if ($('.check:checked').length) {
$('#sub').removeAttr('disabled');
} else {
$('#sub').props('disabled', true);
}
});
Обновленная демонстрация: http://jsfiddle.net/kjb0fyr8 /
Вам просто нужно проверить length
свойство проверяемого массива
$('.check').change(function() {
if ($('.check:checked').length) {
$('#sub').removeAttr('disabled');
} else {
$('#sub').attr('disabled', 'disabled');
}
});
Вот демонстрация:http://jsfiddle.net/LUnN5 /
Комментарии:
1. 1 (через 11 часов, когда мой лимит голосов будет сброшен) за получение,
:checked
прежде чем я подумал об этом.2. Вместо повторного сканирования DOM и создания дополнительных экземпляров объектов jQuery, используя
$('.check:checked').length
вы можете просто протестироватьthis.checked
.3. @Jason Вам нужно просканировать DOM, потому что в вопросе спрашивается, установлены ли флажки ‘any’. Таким образом, даже если тот, который был нажат, снят, могут быть другие, которые отмечены.
4. Ах, проверил массив — я этого не заметил 🙂
5. @JanusBahsJacquet ответил почти десять лет назад, я добавил ваш комментарий, спасибо!
Ответ №2:
Получите ссылку на все соответствующие флажки, а затем при change()
событии установите disabled
свойство в зависимости от того, установлен какой-либо из флажков или нет.
var checks = $(':checkbox.check');
checks.change(function() {
$('#bla').attr('disabled', ! checks.filter(':checked').length);
});
Ответ №3:
$(".check").change(function() {
var btn = $("#bla");
if ($(".check").is(":checked")) {
btn.removeAttr("disabled");
} else {
btn.attr("disabled", "disabled");
}
});
$(".check").triggerHandler("change");