Umbrella JS — лёгкая библиотека для работы с DOM в JavaScript, предоставляющая удобный API для выбора элементов, работы с событиями, манипуляций с атрибутами и стилями. Особое внимание уделяется событиям форм, которые являются ключевым инструментом для интерактивных веб-приложений.
События форм делятся на несколько типов: submit,
change, input, focus,
blur. Umbrella JS позволяет легко привязывать
обработчики к этим событиям с помощью метода on.
u('form').on('submit', function(event) {
event.preventDefault();
console.log('Форма отправлена');
});
u('form') — выбирает все элементы
<form> на странице.on('submit', callback) — привязывает обработчик к
событию отправки формы.event.preventDefault() — предотвращает стандартное
поведение браузера, то есть отправку формы.changeСобытие change срабатывает при изменении значения
элементов формы: <input>,
<select>, <textarea>.
u('input[name="username"]').on('change', function(event) {
console.log('Новое значение:', event.target.value);
});
Особенность change в том, что оно срабатывает
только после потери фокуса или подтверждения изменения,
а не в процессе ввода.
inputСобытие input срабатывает при каждом изменении
значения элемента формы. Это удобно для динамической валидации
или подсказок.
u('input[name="email"]').on('input', function(event) {
const value = event.target.value;
console.log('Текущее значение:', value);
});
input является более “живым”, чем change, и
позволяет реагировать на каждый символ при вводе.
Umbrella JS поддерживает события focus и
blur. Они полезны для подсветки активного поля или скрытия
ошибок при потере фокуса.
u('input, textarea').on('focus', function() {
u(this).css('border', '2px solid blue');
});
u('input, textarea').on('blur', function() {
u(this).css('border', '');
});
this внутри обработчика указывает на конкретный
элемент, на котором произошло событие.css позволяет динамически менять стили
элемента.Umbrella JS поддерживает делегирование событий через второй аргумент
метода on, что позволяет привязывать обработчики к
родительскому элементу для динамически добавляемых элементов.
u('form').on('input', 'input[name="dynamic"]', function(event) {
console.log('Изменение динамического поля:', event.target.value);
});
Это особенно полезно при работе с формами, где поля создаются динамически через JavaScript.
С помощью Umbrella JS можно легко реализовать клиентскую валидацию:
u('form').on('submit', function(event) {
event.preventDefault();
let valid = true;
u(this).find('input[required]').each(function() {
if (!u(this).val().trim()) {
valid = false;
u(this).css('border', '2px solid red');
} else {
u(this).css('border', '');
}
});
if (valid) {
console.log('Форма готова к отправке');
}
});
find позволяет искать элементы внутри формы.each используется для перебора выбранных
элементов.val() возвращает текущее значение элемента формы.Umbrella JS упрощает очистку формы:
u('form')[0].reset();
Для более комплексной очистки отдельных полей можно использовать:
u('input, textarea').val('');
Для checkbox и radio важно правильно получать значение:
u('input[type="checkbox"]').on('change', function() {
console.log(this.checked);
});
u('input[name="gender"]').on('change', function() {
console.log(u('input[name="gender"]:checked').val());
});
this.checked возвращает булевое значение для
чекбокса.:checked помогает получить выбранный radio
button или checkbox.Umbrella JS хорошо интегрируется с fetch для
AJAX-запросов:
u('form').on('submit', function(event) {
event.preventDefault();
const data = new FormData(this);
fetch(this.action, {
method: 'POST',
body: data
})
.then(response => response.json())
.then(json => console.log('Ответ сервера:', json))
.catch(error => console.error('Ошибка:', error));
});
FormData автоматически собирает все поля формы.on.val, find, each
упрощают работу с полями.Umbrella JS предоставляет компактный и удобный синтаксис для работы с формами, позволяя обрабатывать события, управлять данными и изменять элементы интерфейса без громоздкого кода.