Cash — это легковесная библиотека для работы с DOM в стиле jQuery. Она предоставляет удобные методы для управления элементами форм, их значениями и событиями. Несмотря на минимальный размер, функциональность Cash позволяет эффективно работать с формами практически так же, как в jQuery, сохраняя при этом высокую производительность.
Метод val() является центральным для работы со
значениями форм. Он позволяет как получать текущее значение элемента
формы, так и задавать новое.
Пример получения значения:
let inputValue = $('#username').val();
console.log(inputValue);
Пример установки значения:
$('#username').val('Иван Иванов');
Метод поддерживает множественные селекторы и массив элементов. При
передаче функции val() можно динамически вычислять значение
для каждого элемента:
$('input[type="text"]').val((index, currentValue) => currentValue.toUpperCase());
Для checkbox и radio важно использовать
метод prop() для проверки состояния
checked.
Пример чтения состояния:
let isChecked = $('#agree').prop('checked');
console.log(isChecked);
Пример установки состояния:
$('#agree').prop('checked', true);
Для множественных элементов можно использовать селектор группы и
метод each():
$('input[name="options"]').each((i, el) => {
$(el).prop('checked', false);
});
Метод val() применяется и для
<select> элементов. Он поддерживает как одиночные,
так и множественные выборы.
Одиночный выбор:
$('#country').val('ru');
Множественный выбор:
$('#languages').val(['ru', 'en']);
Для получения выбранного значения используется тот же метод:
let selected = $('#languages').val(); // вернет массив выбранных значений
Cash поддерживает привязку событий через метод on(). Для
форм особенно актуальны события submit, input
и change.
Отслеживание изменения значения поля:
$('#username').on('input', e => {
console.log(e.target.value);
});
Обработка отправки формы:
$('#form').on('submit', e => {
e.preventDefault(); // предотвращает стандартную отправку
console.log('Форма отправлена');
});
Использование change удобно для
<select> и checkbox:
$('input[type="checkbox"]').on('change', e => {
console.log(e.target.checked);
});
Cash позволяет легко сбросить форму до исходного состояния с помощью
стандартного DOM-метода reset():
$('#form')[0].reset();
Важно помнить, что метод reset() применяется к
DOM-элементу, а не к объекту Cash напрямую, поэтому используется
[0] для доступа к первому элементу выборки.
Хотя Cash не предоставляет встроенной системы валидации, её можно реализовать с использованием событий форм и методов работы с полями.
Пример простой валидации:
$('#form').on('submit', e => {
e.preventDefault();
let username = $('#username').val();
if (!username.trim()) {
alert('Поле username не может быть пустым');
}
});
С помощью each() можно проверять сразу несколько
полей:
$('#form input').each((i, el) => {
if (!$(el).val()) {
console.warn(`Поле ${el.name} пустое`);
}
});
Cash позволяет добавлять и удалять поля форм динамически, управлять атрибутами и классами для отображения ошибок или подсветки:
// Добавление нового поля
$('#form').append('<input type="text" name="newField" />');
// Добавление класса ошибки
$('#username').addClass('error');
// Удаление класса ошибки
$('#username').removeClass('error');
// Изменение атрибута placeholder
$('#username').attr('placeholder', 'Введите имя');
Объединение методов событий и работы с DOM позволяет создавать интерактивные формы. Например, скрывать поля в зависимости от состояния других элементов:
$('#subscribe').on('change', e => {
if (e.target.checked) {
$('#email').show();
} else {
$('#email').hide();
}
});
С помощью toggle() можно переключать видимость элементов
более элегантно:
$('#subscribe').on('change', e => {
$('#email').toggle(e.target.checked);
});
Для передачи данных на сервер или для обработки в JavaScript удобно собирать значения всех полей в объект:
let formData = {};
$('#form input, #form select').each((i, el) => {
let $el = $(el);
formData[$el.attr('name')] = $el.val();
});
console.log(formData);
Такой подход позволяет легко сериализовать форму и работать с данными в дальнейшем.
Cash предоставляет полный набор инструментов для управления формами:
получение и установка значений, работа с чекбоксами и радиокнопками,
обработка событий, динамическое добавление и удаление элементов. Методы
val(), prop(), attr(),
on() и each() формируют основу для любой
работы с формами, делая код компактным и читабельным.