Dom7 — это лёгкая и высокопроизводительная библиотека для работы с DOM в JavaScript, активно используемая в сочетании с фреймворком Framework7. Одной из ключевых задач при работе с веб-приложениями является управление формами: получение значений полей, их изменение, очистка и валидация. Dom7 предоставляет удобный и лаконичный синтаксис для этих операций, который значительно упрощает код по сравнению с чистым JavaScript.
Dom7 позволяет получать значения элементов формы с помощью метода
.val(). Этот метод универсален и работает с
<input>, <textarea> и
<select>.
import Dom7 from 'dom7';
const $input = Dom7('input[name="username"]');
const username = $input.val(); // возвращает текущее значение поля input
text,
email, password) .val()
возвращает строку.value выбранных элементов.
Для получения всех отмеченных чекбоксов удобно использовать
фильтрацию:const checkedValues = Dom7('input[name="interests"]:checked').map((el) => el.value);
<select>) метод
.val() возвращает выбранное значение. Для множественного
выбора возвращается массив выбранных опций.Метод .val() может использоваться не только для
получения значения, но и для его установки. Достаточно передать новое
значение в качестве аргумента:
Dom7('input[name="username"]').val('newUser');
Dom7('textarea[name="message"]').val('Привет, мир!');
Dom7('select[name="colors"]').val(['red', 'blue']);
.val() работает вместе с установкой свойства
checked:Dom7('input[name="subscribe"][value="yes"]').prop('checked', true);
Метод .prop() в Dom7 аналогичен
element.prop в jQuery и позволяет управлять булевыми
свойствами элементов.
Полезной операцией является сброс формы к исходным значениям. Dom7 позволяет очистить форму, обнулив значения всех полей:
Dom7('form#contactForm').find('input, textarea, select').each((el) => {
if (el.type === 'checkbox' || el.type === 'radio') {
el.checked = false;
} else {
el.value = '';
}
});
find('input, textarea, select') возвращает все элементы
формы.each() позволяет выполнять обработку каждого элемента,
используя стандартные свойства DOM.Для динамического реагирования на ввод Dom7 предоставляет метод
.on(). Например, отслеживание изменения значения в
поле:
Dom7('input[name="username"]').on('input', (event) => {
console.log('Новое значение:', event.target.value);
});
change срабатывает при потере фокуса и
окончании редактирования поля.input срабатывает при каждом вводе символа и
подходит для интерактивного контроля.Для чекбоксов и радиокнопок события работают аналогично:
Dom7('input[name="subscribe"]').on('change', (e) => {
console.log('Подписка изменилась:', e.target.checked);
});
Dom7 позволяет работать с формой целиком, используя метод
serializeArray() и манипуляции через .each().
Прямой аналог serializeArray() в Dom7 отсутствует, но можно
реализовать самостоятельно:
const formData = [];
Dom7('form#contactForm').find('input, textarea, select').each((el) => {
if ((el.type === 'checkbox' || el.type === 'radio') && !el.checked) return;
formData.push({ name: el.name, value: el.value });
});
console.log(formData);
Установка значений массово может выполняться через объект:
const values = {
username: 'newUser',
email: 'user@example.com',
subscribe: true
};
Dom7('form#contactForm').find('input, textarea, select').each((el) => {
if (values[el.name] !== undefined) {
if (el.type === 'checkbox' || el.type === 'radio') {
el.checked = !!values[el.name];
} else {
el.value = values[el.name];
}
}
});
Dom7 облегчает работу с атрибутами полей формы через
.attr() и .prop():
.attr('disabled', true) — делает поле недоступным для
редактирования..prop('checked', true) — отмечает чекбокс или
радиокнопку..removeAttr('required') — убирает обязательное
заполнение.Примеры:
Dom7('input[name="email"]').attr('placeholder', 'Введите email');
Dom7('input[name="subscribe"]').prop('checked', false);
.val(),
.prop(), .attr() возвращают объект Dom7, что
позволяет выстраивать цепочки:Dom7('input[name="username"]')
.val('testUser')
.attr('placeholder', 'Имя пользователя')
.prop('disabled', false);
Dom7('form#contactForm input:required')
.each((el) => console.log(el.name, el.value));
<select multiple> и групп чекбоксов.Эти инструменты делают Dom7 мощным средством для получения и изменения значений форм, позволяя писать чистый, лаконичный и высокопроизводительный код без лишних повторений и сложных обходов DOM.