Umbrella JS предоставляет компактный и удобный способ работы с
элементами формы, включая чекбоксы
(<input type="checkbox">) и радиокнопки
(<input type="radio">). Основные операции включают
выбор элементов, получение их состояния, изменение состояния и обработку
событий.
Для работы с чекбоксами и радиокнопками используется стандартный селектор CSS. Umbrella JS позволяет сразу выбрать набор элементов и работать с ними как с коллекцией.
// Выбор всех чекбоксов на странице
u('input[type="checkbox"]');
// Выбор радиокнопок по имени группы
u('input[name="gender"]');
Методы Umbrella JS применяются ко всем выбранным элементам коллекции сразу, что упрощает массовые изменения состояния или добавление обработчиков.
Чтобы узнать, отмечен ли чекбокс или радиокнопка, используется метод
.prop():
// Проверка состояния первого чекбокса
let isChecked = u('input[type="checkbox"]').first().prop('checked');
// Проверка выбранной радиокнопки в группе
let selectedRadio = u('input[name="gender"]').filter((el) => el.checked).first().val();
Особенности:
prop('checked') возвращает true или
false.checked,
так как в группе может быть только один выбранный элемент.Umbrella JS позволяет изменять состояние чекбоксов и радиокнопок
через .prop():
// Установить все чекбоксы в состояние "отмечено"
u('input[type="checkbox"]').prop('checked', true);
// Снять отметку со всех чекбоксов
u('input[type="checkbox"]').prop('checked', false);
// Выбрать радиокнопку с конкретным значением
u('input[name="gender"]').prop('checked', false); // сначала снимаем все
u('input[name="gender"][value="female"]').prop('checked', true);
Важно: для радиокнопок необходимо сначала снять отметку со всех элементов группы, чтобы гарантировать, что будет выбран только один элемент.
Для чекбоксов, особенно при множественном выборе, удобно использовать
.filter() и .map():
// Массив значений отмеченных чекбоксов
let checkedValues = u('input[type="checkbox"]:checked')
.map((el) => el.value);
Для радиокнопок:
// Получение значения выбранной радиокнопки
let selected = u('input[name="gender"]').filter((el) => el.checked).first().val();
Umbrella JS использует метод .on() для привязки событий.
Для чекбоксов и радиокнопок чаще всего используется
change:
// Отслеживание изменения состояния чекбоксов
u('input[type="checkbox"]').on('change', (e) => {
let checkbox = u(e.currentTarget);
console.log('Состояние изменилось:', checkbox.val(), checkbox.prop('checked'));
});
// Обработка выбора радиокнопок
u('input[name="gender"]').on('change', (e) => {
let selected = u('input[name="gender"]').filter((el) => el.checked).first().val();
console.log('Выбран пол:', selected);
});
Особенности работы с событиями:
e.currentTarget указывает на конкретный элемент,
вызвавший событие..val() и .prop('checked') позволяют
одновременно получить данные и текущее состояние.Umbrella JS облегчает работу с группами элементов с помощью методов
.filter(), .each() и .map(). Это
особенно полезно для работы с множественными чекбоксами:
// Снять отметку только с чекбоксов, у которых value="option2"
u('input[type="checkbox"]').filter((el) => el.value === 'option2').prop('checked', false);
// Вывести значения всех отмеченных чекбоксов
u('input[type="checkbox"]:checked').each((el) => {
console.log(el.value);
});
Можно комбинировать работу с чекбоксами и радиокнопками с другими возможностями Umbrella JS, например, с добавлением или удалением классов:
// Подсветка выбранных чекбоксов
u('input[type="checkbox"]').on('change', (e) => {
let checkbox = u(e.currentTarget);
checkbox.parent().toggleClass('active', checkbox.prop('checked'));
});
Это позволяет создавать интерактивные формы с визуальной обратной связью без лишнего кода.
Если чекбоксы или радиокнопки добавляются динамически, важно использовать делегирование:
// Делегирование событий на контейнер
u('#form-container').on('change', 'input[type="checkbox"]', (e) => {
console.log('Динамический чекбокс изменился:', e.currentTarget.value);
});
Метод поддерживает селектор второго аргумента для фильтрации целевых элементов, что делает обработку динамически созданных элементов простой и удобной.
Umbrella JS обеспечивает лаконичный и интуитивно понятный синтаксис для работы с чекбоксами и радиокнопками. Основные преимущества: единый подход к коллекциям элементов, удобные методы для получения и изменения состояния, возможность массовых операций и интеграция с обработчиками событий.