ProgrammerBook.ru: Обратите внимание, что

  1. данный документ является переводом документа «HTML Forms»;
  2. данный документ может содержать неточности, опечатки и ошибки перевода;
  3. официальным документом по данной тематике является оригинальный документ на английском языке, расположенный на сайте W3C.

Элемент FORM

Допустимый Контекст: %Body.Content
Модель Содержимого: %Body.Content плюс INPUT, TEXTAREA и SELECT
Обратите внимание, вы не можете вкладывать элементы FORM!

Заполняемые HTML-формы могут быть использованы для опросов, бронирования гостиниц, бланков заказов, ввода данных и широкого спектра других приложений. Форма определяется как часть HTML-документа. Пользователь заполняет форму и затем отправляет её. Агент пользователя посылает содержимое формы, определяемое элементом FORM. Как правило, данные отправляются на HTTP-сервер, но вы также можете отправить содержимое e-mail формы для асинхронной обработки.

Формы создаются путём размещения полей ввода в абзацах, предварительно отформатированном тексте, списках и таблицах. Это даёт значительную гибкость при проектировании макета форм.

HTML 3.0 поддерживает следующие виды полей:

Предполагается, что в будущих изменениях в HTML будет добавлена поддержка звуковых полей, многострочный ввод таблиц базы данных и расширяемые многострочные текстовые поля для поддержки целого ряда других типов данных, в дополнение к простому тексту. Сценарии на стороне клиента будут предоставлять средства для ограничения значений полей и добавлять новые типы полей.

Пример формы

Этот вымышленный пример представляет собой анкету. Он использует INPUT элемент для создания простых текстовых полей, переключателей, флажков и кнопок отправки и сброса. Поле TEXTAREA используется для создания поля ввода многострочного текста. Поля формы вложены в несколько элементов абзаца и неупорядоченного списка. Обратите внимание на использование атрибута NAME для указания имени каждого поля:

<TITLE>Образец Анкеты</TITLE>
<H1>Образец Анкеты</H1>

<P>Пожалуйста, заполните эту анкету:

<FORM METHOD=post ACTION="http://www.hal.com/sample">
<P>Ваше имя: <input name="name" size="48">
<P><input name="male" type=radio> Мужчина
<P><input name="female" type=radio>Женщина 
  Кол-во человек в семье: <input name="family" type=int>
  
<P>Города, в которых вы прописаны:

<UL PLAIN>
<LI><input name="city" type=checkbox value="kent"> Кент
<LI><input name="city" type=checkbox value="miami"> Майами
<LI>Прочие <textarea name="other" cols=48 rows=4></textarea>
</UL>

<P>Ник: <INPUT NAME="nickname" size ="42">

<P>Спасибо Вам за заполнение этой анкеты.
<P><INPUT TYPE=SUBMIT> <INPUT TYPE=RESET>
</FORM>

Каждая форма должна располагаться в пределах элемента FORM. В одном документе допускается наличие нескольких форм, но при этом элемент FORM не может быть вложенным. Браузер отвечает за обработку фокуса ввода, т.е. какое поле в настоящее время будет получать данные вводимые с клавиатуры. Многие платформы имеют устоявшиеся соглашения для управления фокусом в форме, например, Tab и Shift-Tab для перемещения фокуса вперёд и назад между полями, а клавиша Enter (она же Return) для отправки формы.

Этот стандарт определяет и требует поддержки только HTTP-протокола доступа. В рамках любого протокола, отправляемое содержимое формы логически состоит из списка пар имя/значение, где имена задаются NAME атрибутами различных полей в FORM. Каждому полю обычно задаётся уникальное имя. Несколько переключателей могут иметь одни и те же имена, так как вы определяете, что они принадлежат к одной и той же группе элементов управления - одновременно может быть выбран только один переключатель в группе.

Примечание: Список содержимого пар имя/значение не включает невыбранные переключатели и флажки. В общем, любое поле с нулевым значением может быть исключено из списка содержимого.

Сценарии на стороне клиента и заполнения форм

HTML 3.0 не обеспечивает прямую поддержку ограничения значений, вводимых в текстовые поля, или производные поля, значения которых вычисляются на основе значений других полей. Вместо того, чтобы расширить разметку для поддержки этих функций, HTML 3.0 предоставляет средства для связывания формы со сценарием. Поддержка сценариев не является обязательной, и спецификация HTML 3.0 не распространяется на языки сценариев или детали их взаимодействия с агентом пользователя.

Атрибут SCRIPT элемента FORM определяет сценарий по средствам URI-адреса. Агент пользователя загружает сценарий и интерпретирует его локально. Сценарии обрабатывают различные сообщения как для отдельных полей так и для формы в целом. Эти сообщения соответствуют таким событиям, как:

Сценарии могут проверять и устанавливать свойства полей. Они могут также проверять небольшой набор стандартных свойств агента пользователя, например имя пользователя, время суток, тип агента пользователя и так далее.

Сценарии не могут делать ничего из того, что может поставить под угрозу пользователя или хост-машину. Сценарии не могут отправлять сообщения через сеть, читать или записывать файлы. Допустимые библиотечные вызовы ограничены очень небольшим и хорошо определённым набором. Такие меры предосторожности необходимы для ненадёжных сценариев. Предполагается, что сценарий будет предлагать гораздо более широкий интерфейс программирования приложений для проверенных сценариев, как это определяется на основе цифровой подписи третьей доверенной стороны.

Допустимые Атрибуты для FORM

ACTION
Атрибут ACTION представляет собой URL, определяющий адрес по которому отправляется содержимое формы для получения ответа. Если ACTION отсутствует, то предполагается использование URL-адреса самого документа. Способ передачи данных зависит от протокола доступа URL-адреса, и от значений METHOD и ENCTYPE атрибутов.
METHOD
Определяет различия в протоколе, используемом для отправки содержимого формы. В настоящее время он ограничивается GET (по умолчанию) или POST. Атрибут был введён для информирования агентов пользователей о том, какие HTTP-методы поддерживает сервер.
ENCTYPE
Этот атрибут определяет MIME-тип содержимого, используемый для кодирования содержимого формы. По умолчанию это строка: «application/x-www-form-urlencoded».
SCRIPT
Может быть использован для указания URI-адреса сценария. Язык сценария и интерфейс с агентом пользователя не является частью спецификации HTML 3.0.