15

Проверка состояния чекбокса с помощью jQuery

18

Как мне проверить, отмечен ли 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 ответ(ов)

24

В jQuery, чтобы проверить, выбран ли чекбокс с определённым идентификатором, можно использовать следующий код:

$('#' + id).is(":checked")

Этот код возвращает true, если чекбокс отмечен, и false, если нет.

Если у вас есть массив чекбоксов с одинаковым именем, вы можете получить список отмеченных чекбоксов следующим образом:

var $boxes = $('input[name=thename]:checked');

После этого, чтобы перебрать все отмеченные чекбоксы и выполнить какие-либо действия с ними, используйте:

$boxes.each(function(){
    // Здесь можно выполнить необходимые действия с текущим чекбоксом
});

Чтобы узнать, сколько чекбоксов выбрано, можно воспользоваться свойством length:

$boxes.length;

Таким образом, вы сможете легко проверять отмеченные чекбоксы и работать с ними.

7

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;

Такой подход позволяет избежать конфликтов идентификаторов и правильно работать с элементами формы.

3

Данный код $('#checkbox').is(':checked'); возвращает true, если чекбокс отмечен, и false, если не отмечен.

1

Все приведенные методы полезны для проверки состояния чекбокса:

$('#checkbox').is(":checked")

$('#checkbox').prop('checked')

$('#checkbox')[0].checked

$('#checkbox').get(0).checked

Рекомендуется избегать использования DOM-элемента напрямую или использования this.checked в инлайн-обработчиках. Вместо этого следует использовать метод jQuery и добавить обработчик событий.

1

Вы можете использовать следующий код на jQuery, чтобы проверить, выбран ли чекбокс или нет:

if ($('input[name="checkBoxName"]').is(':checked')) {
    // чекбокс выбран
} else {
    // чекбокс не выбран
}

Или альтернативный способ:

if ($('input[name="checkBoxName"]:checked').length) {
    // чекбокс выбран
} else {
    // чекбокс не выбран
}

Первый способ использует метод .is(':checked'), который возвращает true, если чекбокс отмечен, и false в противном случае. Второй способ проверяет длину выбранного элемента; если длина больше 0, значит чекбокс отмечен. Оба варианта работают, так что вы можете использовать тот, который вам удобнее.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь