Dom7 — это компактная библиотека для работы с DOM, активно
используемая во фреймворке Framework7, предоставляющая удобные методы
для поиска элементов, работы с классами, атрибутами, событиями и
значениями элементов. Одним из ключевых аспектов взаимодействия с
формами является получение и изменение значения элементов через свойство
value.
Для извлечения значения из полей формы (input, textarea, select)
используется метод .val(). При вызове без аргументов он
возвращает текущее значение первого элемента в выборке.
var inputValue = Dom7('input[name="username"]').val();
console.log(inputValue);
Особенности метода .val():
value.select возвращается выбранное значение, а для
множественного выбора — массив выбранных опций.Пример с select и множественным выбором:
var selectedValues = Dom7('select[multiple]').val();
console.log(selectedValues); // ['option1', 'option3']
Для проверки текущего состояния checkbox или
radio удобно комбинировать .val() с
.prop('checked'):
var isChecked = Dom7('input[type="checkbox"]').prop('checked');
console.log(isChecked); // true или false
Метод .val() также используется для задания значения
элемента. В отличие от обычного присваивания через
element.value, Dom7 позволяет изменять значения сразу для
всех выбранных элементов:
Dom7('input[name="username"]').val('newUser');
Для множественных элементов это особенно удобно:
Dom7('input[type="text"]').val('default');
В этом случае каждый текстовый input в выборке получит значение
'default'.
Для select можно задавать как одну опцию, так и массив
значений для множественного выбора:
// одиночный выбор
Dom7('select[name="country"]').val('ru');
// множественный выбор
Dom7('select[multiple]').val(['option1', 'option2']);
Dom7 поддерживает использование функций для динамического изменения значения. Вместо фиксированной строки или числа можно передать функцию, которая возвращает новое значение для каждого элемента в выборке:
Dom7('input[name="score"]').val(function(index, oldValue) {
return parseInt(oldValue) + 10;
});
Пояснение параметров функции:
index — порядковый номер элемента в выборке.oldValue — текущее значение элемента перед
изменением.Это позволяет выполнять массовые операции без явных циклов.
textareaДля textarea метод .val() работает так же,
как и с input[type="text"]. Получение возвращает текстовое
содержимое, а установка изменяет текст:
// Получение текста
var message = Dom7('textarea[name="comment"]').val();
// Установка нового текста
Dom7('textarea[name="comment"]').val('Новый комментарий');
valueИзменение значения через .val() не вызывает события
input или change автоматически. Если
требуется, чтобы эти события срабатывали, их необходимо триггерить
вручную:
Dom7('input[name="username"]').val('user123').trigger('change');
Это особенно важно при использовании библиотек, которые реагируют на события изменения формы.
Dom7 позволяет работать и с другими HTML-элементами, не имеющими
стандартного value, через .attr():
var customValue = Dom7('.custom-element').attr('data-value');
Dom7('.custom-element').attr('data-value', 'newValue');
Хотя это не относится напрямую к val(), комбинирование
.val() и .attr() расширяет возможности работы
с данными на странице.
Метод .val() полностью поддерживает цепочки Dom7.
Например, можно сразу задать значение и добавить класс:
Dom7('input[name="email"]').val('user@example.com').addClass('filled');
Это делает код лаконичным и удобным для массовых операций с формами и динамическим контентом.
val().val() без аргументов.input и change — при необходимости их нужно
триггерить вручную..attr().Метод .val() в Dom7 обеспечивает простой и мощный способ
взаимодействия с формами и полями ввода, объединяя удобство
jQuery-подобного синтаксиса с современными возможностями JavaScript.