Веб-форма представляется уже знакомым для нас элементом html - тегом
также типом HTMLFormElement в JS, который наследуется от типа HTMLElement. Формы имеют некоторые свойства и методы по умолчанию. Некоторые из них: name - имя формы (эквивалент HTML-атрибута name); submit( ) - отправляет данные формы; reset( ) - сбрасывает все поля формы, восстанавливает значения по умолчанию;
Когда данные с формы отправляются, перед отправкой в браузере
генерируется событие submit. В его обработчике можно проверить введенные в форме данные, и при необходимости заблокировать их отправку, отменив для события действие, предлагаемое по умолчанию. Помимо этого, в любой момент можно отправить данные с формы программно, для этого не требуется даже наличия самой кнопки отправки. Достаточно лишь самой формы и обработчика:
При такой отправке данных формы событие submit не генерируется, поэтому проверять введенные
данные лучше заранее. Одна из главных проблем при работе с формами - многократная отправка. Иногда пользователи от нетерпения кликают много раз по кнопке “отправить”, что приводит к перегрузке сервера и другим проблемам. Решения всего два - отключение кнопки отправки после того, как данные отправлены , и отмена последующих попыток отправки данных в обработчике submit.
Как и другие элементы страницы, элементы форм доступны с помощью
встроенных DOM-методов. Помимо этого, все элементы любой формы содержатся в ее коллекции elements - упорядоченном списке ссылок на все поля формы и все элементы ,
Практически все поля форм имеют несколько общих свойств. Так
как многие поля представляют собой тип , одни свойства используются только с полями определенного типа, другие же доступны для всех типов полей. Некоторые из них: disabled - логическое значение, указывающее, отключено ли поле name - имя поля readOnly - логическое значение, указывающее, доступно ли поле только для чтения tabIndex - порядок перехода по нажатию клавиши табуляции
Возможность динамически изменять свойства полей форм позволяет в любой момент модифицировать
форму самыми разными способами. Например, иногда пользователь кликает слишком много раз по кнопке отправки. Это может привести к выставлению нескольких счетов в приложениях электронной коммерции. В связи с этим полезно отключать работу кнопки отправки после первого клика по ней, или, другими словами, при генерировании события submit.
Оно есть практически у всех полей формы, у элементов input оно
имеет то же значение, что содержание атрибута type в соответствующем теге. У элементов input и button свойство type можно изменять динамически, у элемента select оно доступно только для чтения, изменять его нельзя.
(); Первый назначает фокус полю формы, то есть делает его активным, после чего оно начинает реагировать на события клавиатуры. Например, в текстовом поле, получившем фокус, появляется курсор, показывающий, что оно готово принимать ввод.
Этот метод отменяет полю фокус и не назначает его никакому другому
полю. Раньше он часто использовался, когда не было атрибута readonly, на данный момент практически не используется. *Когда к тегу добавляется атрибут readonly, текстовое поле не может изменяться пользователем, в том числе вводиться новый текст или модифицироваться существующий. Тем не менее, состояние и содержимое поля можно менять с помощью js.
Все поля форм поддерживают три события: blur - генерируется при
утрате фокуса полем change - генерируется для элементов input и textarea при утрате фокуса, если свойство value было изменено, а также для элементов select при выборе другого элемента из списка focus - генерируется при получении фокуса полем