Zepto — лёгкая библиотека, предназначенная для работы с DOM, событиями и AJAX. Одной из ключевых задач при работе с формами является валидация данных, отправляемых пользователем. Zepto предоставляет удобные средства для выборки элементов, отслеживания событий и манипуляции значениями полей, что делает её эффективным инструментом для валидации.
Для работы с формой используется функция $(),
аналогичная jQuery.
var form = $('#myForm'); // Вся форма
var inputName = $('#name'); // Поле имени
var inputEmail = $('#email'); // Поле email
Метод .find() позволяет искать элементы внутри
формы:
var inputs = form.find('input, textarea, select');
Это удобно для итерации по всем полям и применения одинаковых правил валидации.
Для валидации важно уметь считывать значения полей. Zepto
предоставляет метод .val():
var nameValue = inputName.val();
inputEmail.val('example@example.com'); // Установка значения
Метод .val() возвращает строку, что удобно для
дальнейшей проверки.
Основное событие для валидации — submit. Его можно
перехватить и предотвратить стандартное поведение формы:
form.on('submit', function(e) {
e.preventDefault(); // Отмена стандартной отправки
validateForm();
});
Метод .on() позволяет назначать обработчики событий не
только на формы, но и на отдельные поля:
inputEmail.on('blur', function() {
validateEmail($(this).val());
});
Событие blur срабатывает при потере фокуса, что удобно
для проверки данных по мере ввода.
Для текстовых полей часто используют проверку на пустоту или соответствие регулярному выражению:
function validateNotEmpty(value) {
return value.trim() !== '';
}
function validateEmail(value) {
var emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailPattern.test(value);
}
Эти функции возвращают true, если значение корректно, и
false в противном случае.
Можно комбинировать проверки для всех полей и собирать ошибки:
function validateForm() {
var errors = [];
if (!validateNotEmpty(inputName.val())) {
errors.push('Имя не должно быть пустым');
}
if (!validateEmail(inputEmail.val())) {
errors.push('Некорректный email');
}
if (errors.length > 0) {
displayErrors(errors);
} else {
submitForm();
}
}
Zepto позволяет динамически изменять DOM для отображения ошибок:
function displayErrors(errors) {
var errorContainer = $('#errorContainer');
errorContainer.empty(); // Очистка предыдущих ошибок
errors.forEach(function(error) {
errorContainer.append('<div class="error">' + error + '</div>');
});
}
Метод .empty() очищает содержимое контейнера,
.append() добавляет новые элементы.
Для повышения удобства пользователей можно проверять поля при изменении их значения:
inputs.on('input', function() {
var field = $(this);
if (field.attr('type') === 'email') {
if (!validateEmail(field.val())) {
field.addClass('invalid');
} else {
field.removeClass('invalid');
}
}
});
Методы .addClass() и .removeClass()
позволяют визуально подсвечивать некорректные поля.
Zepto интегрируется с AJAX для проверки данных на сервере без перезагрузки страницы:
inputEmail.on('blur', function() {
var email = $(this).val();
$.ajax({
type: 'POST',
url: '/check-email',
data: { email: email },
success: function(response) {
if (!response.available) {
inputEmail.addClass('invalid');
} else {
inputEmail.removeClass('invalid');
}
}
});
});
Метод $.ajax() позволяет гибко настраивать запросы и
обрабатывать результат.
Можно создавать собственные функции проверки для любых типов данных:
function validatePassword(value) {
return value.length >= 8 && /[A-Z]/.test(value) && /\d/.test(value);
}
Эту функцию легко интегрировать в общий процесс проверки формы.
Комбинирование всех перечисленных возможностей позволяет строить мощную систему валидации:
$() и
.find()..on()..val()..addClass()/.removeClass().$.ajax().Такой подход обеспечивает высокую интерактивность формы, мгновенную обратную связь пользователю и лёгкость поддержки кода.