Cash — это компактная и удобная библиотека для работы с DOM в JavaScript, которая предоставляет знакомый синтаксис jQuery, но с меньшим весом и высокой производительностью. Работа с элементами форм, такими как checkbox и radio, является одной из ключевых возможностей библиотеки.
Элементы формы можно выбрать с помощью стандартных селекторов CSS:
// Все checkbox на странице
const allCheckboxes = $('input[type="checkbox"]');
// Все radio с именем "gender"
const genderRadios = $('input[name="gender"]');
Особенности выбора:
input[type="checkbox"] возвращает коллекцию
всех checkbox.name) часто используется для групп
radio-кнопок, где важно взаимодействовать только с одной группой.Чтобы проверить, отмечен ли checkbox, используется метод
.prop():
const checkbox = $('#subscribe');
const isChecked = checkbox.prop('checked');
console.log(isChecked); // true или false
Ключевой момент: prop('checked')
возвращает логическое значение, в отличие от
attr('checked'), которое отражает только начальное
состояние элемента в HTML.
Для получения всех отмеченных checkbox в группе:
const checkedBoxes = $('input[name="features"]:checked');
checkedBoxes.each((el) => {
console.log(el.value);
});
Метод :checked является удобным CSS-псевдоклассом,
который Cash полностью поддерживает.
Чтобы программно отметить или снять отметку, применяется
.prop():
const newsletter = $('#newsletter');
// Отметить
newsletter.prop('checked', true);
// Снять отметку
newsletter.prop('checked', false);
// Переключить состояние
newsletter.prop('checked', !newsletter.prop('checked'));
Для radio важно учитывать, что в группе может быть выбран только один элемент.
Получение выбранного значения:
const selectedGender = $('input[name="gender"]:checked').val();
console.log(selectedGender); // например, "male"
Установка выбранного radio:
// Отметить radio с value = "female"
$('input[name="gender"][value="female"]').prop('checked', true);
Особенность: при отметке одного radio в группе остальные автоматически снимаются.
Cash позволяет легко привязать события к изменениям состояния элементов формы.
// Для checkbox
$('#subscribe').on('change', (e) => {
console.log('Checkbox состояние:', e.target.checked);
});
// Для radio
$('input[name="gender"]').on('change', (e) => {
console.log('Выбран пол:', e.target.value);
});
Особенности событий:
change срабатывает только после изменения
состояния пользователем или через скрипт.Cash позволяет работать с множеством элементов сразу:
// Отметить все checkbox
$('input[type="checkbox"]').prop('checked', true);
// Снять отметку у всех checkbox
$('input[type="checkbox"]').prop('checked', false);
// Переключить состояние всех checkbox
$('input[type="checkbox"]').each((el) => {
el.checked = !el.checked;
});
Методы .prop() и .each() обеспечивают
высокую гибкость при работе с коллекциями элементов.
Для получения значения отдельного checkbox используется
.val():
const feature = $('#feature1').val();
console.log(feature);
Для группы checkbox удобно собирать все отмеченные значения:
const selectedFeatures = $('input[name="features"]:checked')
.map((el) => el.value)
.get();
console.log(selectedFeatures); // массив значений
Метод .map() возвращает объект Cash, поэтому
.get() преобразует его в массив чистых значений.
Включение/отключение кнопки по checkbox:
$('#acceptTerms').on('change', (e) => {
$('#submitBtn').prop('disabled', !e.target.checked);
});
Синхронизация всех checkbox с одним master checkbox:
$('#selectAll').on('change', (e) => {
$('input[type="checkbox"]').prop('checked', e.target.checked);
});
Автоматическое отображение выбранного radio:
$('input[name="payment"]').on('change', (e) => {
$('.selected-payment').text(e.target.value);
});
.prop(), .val(),
.map(), .each() — базовые инструменты для
работы с состоянием и значениями.:checked упрощает выбор отмеченных
элементов.change позволяют отслеживать изменения
состояния.Cash обеспечивает лаконичный и предсказуемый синтаксис при управлении checkbox и radio, позволяя писать чистый и производительный код без лишней сложности.