Dom7 — это легковесная библиотека для работы с DOM, созданная как более простая альтернатива jQuery, оптимизированная для мобильных приложений и современных браузеров. Она предоставляет удобные методы для выборки элементов, управления событиями, манипуляции классами, атрибутами и содержимым элементов.
Библиотека использует цепочки методов, что позволяет писать лаконичный и читаемый код. Любой объект Dom7 ведет себя как массив элементов DOM, что упрощает обработку коллекций.
Сериализация форм — процесс преобразования данных формы в строку запроса (query string) или объект, пригодный для отправки на сервер. Dom7 обеспечивает удобные средства для получения и преобразования значений элементов формы без использования дополнительных библиотек.
Метод serializeArray() возвращает массив объектов с
полями name и value для каждого элемента
формы, содержащего данные:
import $ from 'dom7';
const formData = $('form').serializeArray();
console.log(formData);
/*
[
{ name: 'username', value: 'ivan' },
{ name: 'email', value: 'ivan@example.com' }
]
*/
Особенности работы метода:
name.disabled) элементы.checkbox и radio учитываются
только отмеченные элементы (checked).Метод serialize() формирует URL-encoded строку из
элементов формы, что удобно для передачи данных через GET-запросы или
тело POST-запроса с типом
application/x-www-form-urlencoded:
const queryString = $('form').serialize();
console.log(queryString); // username=ivan&email=ivan%40example.com
Преимущества метода:
Dom7 позволяет получать и изменять значения отдельных полей с помощью
метода .val().
const usernameInput = $('#username');
console.log(usernameInput.val()); // "ivan"
usernameInput.val('petr');
Метод .val() поддерживает:
input[type="text"],
textarea).select и множественные выборы
(multiple).checked.Для удобного использования данных формы в JavaScript часто необходимо
иметь объект с ключами и значениями. Dom7 позволяет комбинировать
serializeArray() с методом reduce() для
создания объекта:
const formObject = $('form').serializeArray().reduce((obj, field) => {
if (obj[field.name]) {
if (!Array.isArray(obj[field.name])) {
obj[field.name] = [obj[field.name]];
}
obj[field.name].push(field.value);
} else {
obj[field.name] = field.value;
}
return obj;
}, {});
console.log(formObject);
/*
{
username: 'ivan',
email: 'ivan@example.com',
interests: ['coding', 'music']
}
*/
Особенности такого подхода:
name
(например, множественные чекбоксы).Изменение значений формы с последующей сериализацией может быть выполнено в цепочке:
$('form #username').val('anna');
const updatedQuery = $('form').serialize();
console.log(updatedQuery); // username=anna&email=ivan%40example.com
Dom7 автоматически отслеживает текущие значения элементов, что позволяет использовать динамически изменяемые формы без ручного перебора всех полей.
Dom7 интегрируется с событиями формы, такими как submit,
что позволяет автоматически сериализовать данные при отправке:
$('form').on('submit', function (e) {
e.preventDefault();
const formData = $(this).serialize();
console.log(formData);
});
Преимущества:
Методы serialize() и serializeArray() не
включают файлы <input type="file">. Для работы с
файлами требуется использовать FormData стандартного
API:
const formEl = $('form')[0];
const formData = new FormData(formEl);
fetch('/upload', {
method: 'POST',
body: formData
});
Это позволяет комбинировать Dom7 с современными API для полного контроля над отправкой данных.
serialize() и serializeArray().FormData.serializeArray() в объект с ключами и массивами
значений.Dom7 обеспечивает компактное и эффективное управление формами в JavaScript, позволяя сериализовать данные, управлять значениями полей и интегрировать формы с AJAX без лишнего кода.