В Dom7 выбор элементов осуществляется с помощью функции
$(). Для работы с input и
textarea это может выглядеть следующим образом:
const inputField = $('input[name="username"]');
const textAreaField = $('textarea#message');
Особенности:
Для input и textarea значение хранится в
свойстве value. В Dom7 используются методы
.val():
// Чтение значения
const inputValue = inputField.val();
const textAreaValue = textAreaField.val();
// Установка значения
inputField.val('Новый текст');
textAreaField.val('Сообщение для textarea');
Примечания:
.val() без аргументов возвращает значение первого
элемента коллекции..val(value) устанавливает значение для всех элементов в
коллекции.Dom7 обеспечивает удобную работу с событиями через .on()
и .off(). Для input и textarea
наиболее важны события:
input — срабатывает при каждом изменении текста.change — срабатывает при потере фокуса после
изменения.focus и blur — при входе и выходе из
поля.Пример:
inputField.on('input', function() {
console.log('Текущая длина текста:', $(this).val().length);
});
textAreaField.on('focus', function() {
$(this).addClass('active');
});
textAreaField.on('blur', function() {
$(this).removeClass('active');
});
Особенности:
input более динамично, чем
change.this внутри обработчика всегда указывает на текущий
DOM-элемент, а не на коллекцию Dom7.С помощью .attr() и .prop() можно управлять
атрибутами и свойствами полей ввода:
// Установка и чтение атрибутов
inputField.attr('placeholder', 'Введите имя');
const placeholder = inputField.attr('placeholder');
// Управление свойствами
textAreaField.prop('disabled', true);
const isDisabled = textAreaField.prop('disabled');
Различие между attr и prop:
.attr() изменяет HTML-атрибут, что влияет на исходный
код страницы..prop() изменяет текущее свойство объекта DOM, что
сразу отражается в поведении поля.Dom7 упрощает сброс данных полей:
inputField.val('');
textAreaField.val('');
Для комплексного сброса формы:
$('form#contactForm')[0].reset();
Важно: .reset() используется на
нативном DOM-элементе, поэтому берется первый элемент коллекции
[0].
Для визуальной индикации состояния полей используют методы
.addClass(), .removeClass(),
.toggleClass():
inputField.on('focus', function() {
$(this).addClass('focused');
});
inputField.on('blur', function() {
$(this).removeClass('focused');
});
Можно динамически менять CSS-свойства через .css():
textAreaField.css('borderColor', 'red');
input и textareaDom7 позволяет создавать элементы через шаблон HTML и вставлять их в DOM:
const newInput = $('');
$('form#contactForm').append(newInput);
const newTextArea = $('');
$('form#contactForm').prepend(newTextArea);
Особенности:
.append(),
.prepend(), .after(), .before()
для точного позиционирования.Управление фокусом на input и textarea
осуществляется методами .focus() и
.blur():
inputField.focus(); // перевод курсора в поле
textAreaField.blur(); // убирает фокус
Эти методы полезны для реализации автопереключения между полями или подсветки активного элемента формы.
Dom7 не предоставляет встроенной валидации, но можно легко
реализовать проверку с помощью .val():
inputField.on('blur', function() {
const value = $(this).val();
if (!value.match(/^[a-zA-Z0-9]{3,}$/)) {
$(this).addClass('invalid');
} else {
$(this).removeClass('invalid');
}
});
Примечание:
Даже если выбран один элемент, методы Dom7 применяются как к
коллекции. Это позволяет использовать .each():
$('input, textarea').each(function(index, el) {
$(el).on('input', function() {
console.log(index, $(this).val());
});
});
Преимущества: