Проверка состояния чекбокса с помощью jQuery
Как мне проверить, отмечен ли checkbox в массиве checkbox'ов по идентификатору этого массива?
Я использую следующий код, но он всегда возвращает количество отмеченных checkboxes, независимо от переданного идентификатора.
function isCheckedById(id) {
alert(id);
var checked = $("input[@id=" + id + "]:checked").length;
alert(checked);
if (checked == 0) {
return false;
} else {
return true;
}
}
Что я делаю не так? Как корректно получить состояние checkbox'а по его идентификатору?
5 ответ(ов)
В jQuery, чтобы проверить, выбран ли чекбокс с определённым идентификатором, можно использовать следующий код:
$('#' + id).is(":checked")
Этот код возвращает true
, если чекбокс отмечен, и false
, если нет.
Если у вас есть массив чекбоксов с одинаковым именем, вы можете получить список отмеченных чекбоксов следующим образом:
var $boxes = $('input[name=thename]:checked');
После этого, чтобы перебрать все отмеченные чекбоксы и выполнить какие-либо действия с ними, используйте:
$boxes.each(function(){
// Здесь можно выполнить необходимые действия с текущим чекбоксом
});
Чтобы узнать, сколько чекбоксов выбрано, можно воспользоваться свойством length
:
$boxes.length;
Таким образом, вы сможете легко проверять отмеченные чекбоксы и работать с ними.
IDs должны быть уникальными в вашем документе, поэтому не следует делать так:
<input type="checkbox" name="chk[]" id="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" id="chk[]" value="Bananas" />
Вместо этого уберите id
, а затем выбирайте элементы по имени или по родительскому элементу:
<fieldset id="checkArray">
<input type="checkbox" name="chk[]" value="Apples" />
<input type="checkbox" name="chk[]" value="Bananas" />
</fieldset>
Теперь, вот пример использования jQuery:
var atLeastOneIsChecked = $('#checkArray :checkbox:checked').length > 0;
// обратите внимание: между идентификатором и селектором не должно быть пробела
// или, без контейнера:
var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
Такой подход позволяет избежать конфликтов идентификаторов и правильно работать с элементами формы.
Данный код $('#checkbox').is(':checked');
возвращает true
, если чекбокс отмечен, и false
, если не отмечен.
Все приведенные методы полезны для проверки состояния чекбокса:
$('#checkbox').is(":checked")
$('#checkbox').prop('checked')
$('#checkbox')[0].checked
$('#checkbox').get(0).checked
Рекомендуется избегать использования DOM-элемента напрямую или использования this.checked
в инлайн-обработчиках. Вместо этого следует использовать метод jQuery и добавить обработчик событий.
Вы можете использовать следующий код на jQuery, чтобы проверить, выбран ли чекбокс или нет:
if ($('input[name="checkBoxName"]').is(':checked')) {
// чекбокс выбран
} else {
// чекбокс не выбран
}
Или альтернативный способ:
if ($('input[name="checkBoxName"]:checked').length) {
// чекбокс выбран
} else {
// чекбокс не выбран
}
Первый способ использует метод .is(':checked')
, который возвращает true
, если чекбокс отмечен, и false
в противном случае. Второй способ проверяет длину выбранного элемента; если длина больше 0, значит чекбокс отмечен. Оба варианта работают, так что вы можете использовать тот, который вам удобнее.
Как проверить, отмечен ли чекбокс в jQuery?
Эквивалент document.createElement в jQuery?
Как выбрать элемент по имени с помощью jQuery?
jQuery: Получение Выбранного Значения Из Выпадающего Списка
Эквивалент jQuery $.ready() на чистом JavaScript - как вызвать функцию, когда страница/DOM готовы (дубликат)