Umbrella JS предоставляет компактный и удобный интерфейс для работы с DOM, включая формы. Основное преимущество библиотеки заключается в лаконичности синтаксиса и возможности работать с множественными элементами одновременно без громоздких циклов.
Для получения значений полей формы используется метод
.val(). Он позволяет как получать текущее значение одного
элемента, так и массив значений для группы элементов (например,
радиокнопок или чекбоксов).
// Получение значения одного поля
let username = u('#username').val();
// Получение значения выбранного радио
let selectedOption = u('input[name="gender"]:checked').val();
// Получение массива выбранных чекбоксов
let selectedTags = u('input[name="tags[]"]:checked').map(function(el) {
return u(el).val();
});
Особенности метода .val():
<select multiple> рекомендуется использовать
комбинацию .map() и .val().checked для чекбоксов и радио).Метод .val(value) позволяет задать значение элементу
формы. Он поддерживает строковые, числовые значения и массивы для
множественных элементов.
// Установка значения текстового поля
u('#username').val('Иван');
// Установка выбранного радио
u('input[name="gender"][value="male"]').val(true);
// Установка нескольких выбранных чекбоксов
let selected = ['js', 'html'];
u('input[name="tags[]"]').each(function(el) {
u(el).val(selected.includes(u(el).val()));
});
Ключевые моменты при установке значений:
true отмечает
элемент, false — снимает отметку.<select multiple> достаточно передать массив
значений, которые должны быть выбраны..val() автоматически обновляет отображение
элемента на странице.Umbrella JS упрощает работу с событиями формы. Основные методы для
этого — .on() и .off().
// Отслеживание изменения значения поля
u('#username').on('input', function() {
console.log('Новое значение:', u(this).val());
});
// Отслеживание изменения чекбоксов
u('input[name="tags[]"]').on('change', function() {
let selected = u('input[name="tags[]"]:checked').map(function(el) {
return u(el).val();
});
console.log('Выбранные теги:', selected);
});
Особенности работы с событиями:
input срабатывает при каждом изменении
текстового поля.change удобно для чекбоксов, радиокнопок и
селектов.this указывает на DOM-элемент,
обёрнутый в экземпляр Umbrella JS через u(this).Для отправки данных на сервер удобно использовать сериализацию формы.
Umbrella JS не предоставляет встроенного метода сериализации, но можно
создать компактный код с .map() и .val().
let formData = {};
u('#myForm').find('input, select, textarea').each(function(el) {
let $el = u(el);
let name = $el.attr('name');
if (!name) return;
if ($el.attr('type') === 'checkbox') {
formData[name] = u(el).val() && $el.is(':checked') ? $el.val() : null;
} else if ($el.attr('type') === 'radio') {
if ($el.is(':checked')) formData[name] = $el.val();
} else {
formData[name] = $el.val();
}
});
console.log(formData);
Этот подход позволяет получить объект с ключами, соответствующими именам полей, и значениями, которые можно сразу передавать в AJAX-запросе.
Umbrella JS облегчает динамическое управление формой, включая очистку и массовое изменение значений.
// Очистка всех текстовых полей формы
u('#myForm').find('input[type="text"], textarea').val('');
// Установка значения по условию
u('input[name="tags[]"]').each(function(el) {
if (u(el).val() === 'javascript') u(el).val(true);
});
Особенности динамических изменений:
.val() и .each() позволяют изменять
группы элементов одновременно.Собранные значения формы легко передавать через fetch
или XMLHttpRequest. Пример с fetch:
let data = {};
u('#myForm').find('input, select, textarea').each(function(el) {
let $el = u(el);
if ($el.attr('name')) data[$el.attr('name')] = $el.val();
});
fetch('/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
}).then(res => res.json())
.then(response => console.log('Ответ сервера:', response));
Использование Umbrella JS здесь позволяет сократить количество кода для перебора элементов и обработки значений формы.
.val() в Umbrella JS.val() универсален и поддерживает как получение,
так и установку значений.checkbox, radio,
select multiple) рекомендуется комбинировать
.map() и .each().input и change позволяют
отслеживать динамическое взаимодействие с пользователем..each() с проверкой типа элемента.Работа с формами через Umbrella JS позволяет создавать компактный, читаемый и производительный код, который легко масштабируется на сложные интерфейсы с большим количеством полей и динамическими условиями.