Работа с чекбоксами и радиокнопками в библиотеке jQuery строится вокруг удобных селекторов, методов получения значений и отслеживания изменений. Основное преимущество заключается в единообразном доступе к состояниям элементов формы и событийной модели, упрощающей обработку взаимодействий.
Чекбоксы и радиокнопки идентифицируются по атрибутам
type="checkbox" и type="radio". Базовый
селектор:
$('input[type="checkbox"]')
$('input[type="radio"]')
Для определения, установлен ли конкретный чекбокс или радиокнопка,
используется метод .prop():
var isChecked = $('#example').prop('checked');
Ключевой момент. Метод .prop()
предпочтительнее .attr() при работе с текущими состояниями.
.attr() показывает значение атрибута в исходной разметке,
тогда как .prop() отражает текущее динамическое
состояние.
Установка чекбокса или переключение радиокнопки выполняется через
.prop('checked', true/false):
$('#option1').prop('checked', true);
$('#option2').prop('checked', false);
Для группы радиокнопок, например выбора одного варианта, используется
общий name:
$('input[name="color"]').prop('checked', false);
$('input[name="color"][value="red"]').prop('checked', true);
Тонкость. Радиокнопки внутри одной группы ведут себя взаимоисключающе на уровне браузера, поэтому смена состояния одного элемента автоматически снимает выбор остальных.
Сбор всех отмеченных чекбоксов:
var values = $('input[type="checkbox"]:checked').map(function() {
return $(this).val();
}).get();
Для радиокнопок доступен лишь один выбранный элемент по имени:
var selected = $('input[name="delivery"]:checked').val();
Особенность. Метод .map() вместе с
.get() позволяет сформировать обычный массив, пригодный для
последующей обработки, сериализации или отправки на сервер.
Событие change упрощает реакцию на переключение
состояний:
$('input[type="checkbox"], input[type="radio"]').on('change', function() {
var state = $(this).prop('checked');
var value = $(this).val();
console.log(state, value);
});
Выделенный аспект. Событие change для
радиокнопок срабатывает сразу при выборе, а для чекбоксов — при каждом
изменении их состояния. Это удобно при динамическом обновлении
интерфейса, валидации и фильтрации.
Блокировка взаимодействия выполняется через свойство
disabled:
$('#newsletter').prop('disabled', true);
Аналогично можно вновь разрешить ввод:
$('#newsletter').prop('disabled', false);
Делicate moment. Отключённые элементы не генерируют события взаимодействия и не отправляются при отправке формы, что важно учитывать при обработке данных.
Чекбоксы и радиокнопки, созданные динамически, требуют делегирования
событий. Применяется .on() с указанием контейнера:
$('#container').on('change', 'input[type="checkbox"]', function() {
console.log($(this).val());
});
Такой подход обеспечивает корректную обработку элементов, добавленных в DOM после первоначальной инициализации.
При сериализации формы jQuery учитывает состояние чекбоксов и радиокнопок:
var data = $('form').serialize();
Заметная деталь. Отмеченные чекбоксы включаются в
сериализованную строку, неотмеченные — нет. Радиокнопки включают
выбранный вариант. Для явного получения полного набора стоит
использовать собственную обработку .map().
Нередко состояние чекбоксов используется для управления видимостью
секций, фильтрами или настройками интерфейса. Привязка
change к логике отображения позволяет формировать динамику
без ручного вмешательства в DOM:
$('input[type="checkbox"][name="advanced"]').on('change', function() {
$('.advanced-settings').toggle($(this).prop('checked'));
});
Практическая ценность. Минимизируется количество условной логики на стороне HTML, а контроль переходит в компонентную JS-часть.
jQuery предоставляет несколько удобных селекторов:
:checked — выбранные элементы.:not(:checked) — не выбранные.:disabled — отключённые.:enabled — доступные.Пример фильтрации:
var disabledRadios = $('input[type="radio"]:disabled');
Фильтрация облегчает массовую обработку: отключение групп, включение взаимодействий, синхронизацию с другими элементами.
При построении валидации формы состояние радиокнопок и чекбоксов
часто определяет допустимость отправки. Проверка через
.prop('checked') или селекторы :checked
обеспечивает простые логические конструкции без громоздкой ручной
обработки:
if ($('input[name="agree"]').is(':checked')) {
submitForm();
}
Иногда требуется проверка наличия хотя бы одного выбранного элемента:
var any = $('input[name="category"]:checked').length > 0;
Отметка. Валидация подобного рода является типовым сценарием при настройке фильтров, опросов и мастеров выбора.
Работа с чекбоксами и радиокнопками сводится к трём ключевым операциям:
.prop('checked'),
:checked, .val());.prop('checked', ...),
.prop('disabled', ...));change с делегированием при
необходимости).jQuery обеспечивает компактные, последовательные и предсказуемые способы манипуляции элементами формы. Такая унификация делает API удобным для построения сложных интерфейсов, где взаимодействие с формами является центральным механизмом.