Zepto.js предоставляет удобные методы для работы с событиями форм, включая ввод данных, отправку, изменение значений и взаимодействие с элементами управления. Основное преимущество использования Zepto заключается в лаконичности кода и возможности применять универсальные селекторы и обработчики событий, аналогично jQuery, но с меньшим весом библиотеки.
submitСобытие submit срабатывает при отправке формы. Для
перехвата и предотвращения стандартного поведения формы используется
метод on:
$('form').on('submit', function(e) {
e.preventDefault(); // предотвращает стандартную отправку формы
var formData = $(this).serialize(); // сериализация данных формы
console.log(formData);
});
Ключевые моменты:
e.preventDefault() блокирует отправку формы
браузером.$(this).serialize() превращает все поля формы в строку
вида ключ=значение&ключ=значение, удобную для
AJAX-запросов.$(document).on('submit', 'form.dynamic', function(e) {
e.preventDefault();
});
Zepto поддерживает стандартные события change,
input и focus/blur для элементов
форм.
$('input[name="username"]').on('input', function() {
console.log('Текущее значение:', $(this).val());
});
input срабатывает при каждом изменении значения.change срабатывает только после того, как элемент
теряет фокус и значение изменилось.focus и blur позволяют отслеживать
получение и потерю фокуса.Чекбоксы и радио-кнопки требуют отдельного подхода при сборе данных:
$('input[type="checkbox"]').on('change', function() {
var checkedValues = $('input[type="checkbox"]:checked').map(function() {
return $(this).val();
}).get();
console.log('Выбранные значения:', checkedValues);
});
:checked фильтрует только выбранные элементы.map вместе с get() позволяет
получить массив значений, пригодный для дальнейшей обработки.Zepto позволяет легко изменять свойства элементов форм:
$('input[name="email"]').prop('disabled', true); // блокировка поля
$('input[name="email"]').prop('disabled', false); // разблокировка
$('input[name="email"]').val('example@mail.com'); // установка значения
prop используется для работы с булевыми атрибутами
(disabled, checked,
readonly).val позволяет читать и записывать значения полей.Zepto предоставляет методы serialize и
serializeArray для подготовки данных к отправке:
var dataString = $('form').serialize(); // строка "key=value&key=value"
var dataArray = $('form').serializeArray();
console.log(dataArray);
serializeArray() возвращает массив объектов вида
{ name: 'username', value: 'John' }.События форм часто комбинируются с AJAX для отправки данных без перезагрузки страницы:
$('form').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/submit-form',
data: $(this).serialize(),
success: function(response) {
console.log('Ответ сервера:', response);
},
error: function(xhr, status, error) {
console.error('Ошибка отправки:', error);
}
});
});
$.ajax поддерживает методы GET и
POST.serialize() позволяет передать все значения формы без
ручного перебора полей.Для <select> элементов часто используется событие
change:
$('select[name="country"]').on('change', function() {
var selected = $(this).val();
console.log('Выбранная страна:', selected);
});
$(this).val() — вернёт массив выбранных значений.Если формы добавляются на страницу после её загрузки, важно использовать делегирование:
$(document).on('submit', 'form.dynamic-form', function(e) {
e.preventDefault();
console.log('Динамическая форма отправлена');
});
on указывает на целевой элемент, а
событие ловится на родителе (document или контейнере).Zepto не предоставляет встроенной валидации, но позволяет легко интегрировать её:
$('form').on('submit', function(e) {
e.preventDefault();
var email = $('input[name="email"]').val();
if (!email.includes('@')) {
alert('Неверный email');
return;
}
console.log('Email корректен:', email);
});
append.var $form = $('form');
$form.on('submit', function(e) {
e.preventDefault();
});
Zepto обеспечивает компактный и удобный синтаксис для работы с событиями форм, позволяя быстро управлять данными, контролировать пользовательские действия и интегрировать AJAX. Поддержка всех стандартных событий форм делает библиотеку гибким инструментом для интерактивных интерфейсов.