HTML-форма представляет собой часть документа, содержащая обычный текст, разметку (markup) и специальные элементы управления, называемые controls. controls служат для приема и обработки текста, вводимого пользователем. Форма - это аналог стандартного бланка, заполняемого пользователем. Заполненная форма может быть послана по почте другому пользователю, или передана программе для последующей обработки. Каждый control (графа бланка) должен иметь имя, а его значение определяется его типом. Ниже приведен пример формы, где используются метки и различного типа кнопки:
<form action="http://somesite.com/prog/adduser" method="post">
<p>
<label for="firstname">first name: </label>
<input type="text" id="firstname"><br>
<label for="lastname">last name: </label>
<input type="text" id="lastname"><br>
<label for="email">email: </label>
<input type="text" id="email"><br>
<input type="radio" name="sex" value="male"> male<br>
<input type="radio" name="sex" value="female"> female<br>
<input type="submit" value="send"> <input type="reset">
</p>
</form>
Каждый control имеет исходное и текущее значение, каждое из которых представляет собой символьную строку. Исходное значение может быть определено с помощью соответствующего атрибута.
Кнопки
Разработчики могут создавать три типа кнопок:
submit-кнопки. При активации эти кнопки преадресуют форму адресату. Форма может содержать более одной submit-кнопки.
Кнопки сброса: При активации эти кнопки возвращают все controls в исходное состояние.
Кнопки нажатия. Эти кнопки не имеют какого-либо фиксированного назначения. Каждой такой кнопке может быть поставлен в соответствие, например, скрипт клиента.
Разработчик создает кнопку с помощью элемента button или input.
Следует иметь в виду, что элемент button предоставляет более широкие возможности, чем input.
Переключатели
Переключатели (chekbox; и радио-кнопки) представляют собой двухпозиционные приборы, которые могут находиться в состоянии on/off (вкл/выкл). Пользователь может переводить этот переключатель из одного состояния в другое. Переключатель находится в состоянии "on", когда установлен соответствующий атрибут управляющего элемента.
Несколько переключателей могут относиться к одному и тому же control, позволяя, например, выбрать одно из нескольких значений определенного параметра. Для формирования переключателя используется элемент input.
Радио-кнопки
Радио-кнопки схожи с переключателями. Но здесь при наличии нескольких кнопок, относящихся к одному имени control, перевод одной кнопки в состояние "on" переводит все другие кнопки с тем же именем в состояние "off". Для создания радио-кнопок используется элемент input.
<!element form - - (%block;|script)+ -(form) | -- интерактивная форма --> | |
<!attlist form %attrs; | -- %coreattrs, %i18n, %events -- | |
action %uri; #required | -- хандлер форм со стороны сервера -- | |
method (get|post) get | -- http метод для ввода форм -- | |
enctype %contenttype; "application/x-www-form-urlencoded" | ||
onsubmit %script; #implied | -- форма введена -- | |
onreset %script; #implied | -- форма возвращена в исходное состояние -- | |
accept-charset %charsets; #implied | -- список поддерживаемых символьных наборов --> |
<!element input - o empty | -- управление формой --> |
<!attlist input %attrs; | -- %coreattrs, %i18n, %events -- |
type %inputtype; text | -- what kind of widget is needed -- |
name cdata #implied | -- представить как часть формы -- |
value cdata #implied | -- необходимо для радио-кнопок и переключателей -- |
checked (checked) #implied | -- для радио-кнопок и переключателей -- |
disabled (disabled) #implied | -- не доступно в данном контексте -- |
readonly (readonly) #implied | -- для текста и пароля -- |
size cdata #implied | -- разный для каждого типа полей -- |
maxlength number #implied | -- макс. число символов для текст. полей -- |
src %uri; #implied | -- для полей с изображением -- |
alt cdata #implied | -- краткое описание -- |
usemap %uri; #implied | -- использование карты изображения клиента -- |
tabindex number #implied | -- position in tabbing order -- |
accesskey %character; #implied | -- клавиша доступа -- |
onfocus %script; #implied | -- элемент выделен -- |
onblur %script; #implied | -- элемент не выделен -- |
onselect %script; #implied | -- некоторый текст был выбран -- |
onchange %script; #implied | -- значение элемента изменилось -- |
accept %contenttypes; #implied | -- list of mime types for file upload --> |
text | Этот тип создает текстовый бокс на одну строчку. Значение текстового control равно введенному тексту. |
password | Подобен типу "text", но отображение ввода делается так, что вводимые символы не видны (напр. каждому введенному символу ставится в соответствие *). Значение данного типа control равно введенному тексту. Служит для ввода паролей. |
checkbox | Представляет собой двух позиционный переключатель (вкл/выкл=on/off). Когда переключатель в положении on, значение checkbox = "active". Состояние переключателя передается только в случае, когда переключатель в состоянии on. |
radio | также является двухпозиционным переключателем. Единственным отличием от checkbox является то, что при наличии нескольких радио-кнопок с идентичным именем в состоянии on может быть всегда только одна. | ||
submit | формирует кнопку submit. При активации этой кнопки пользователем, форма передается по адресу, указанному атрибутом action элемента form. Форма может содержать несколько таких кнопок. | ||
image | Создает графический образ кнопки submit. Значение атрибута src специфицирует URL изображения кнопки. Рекомендуется воспользоваться атрибутом alt, чтобы создать альтернативный текст для агентов пользователя, не поддерживающих графику. Если кнопка активизирована, форма передается серверу-адресату. Передаваемые данные содержат значения name.x=x и name.y=y, где "name" - значение атрибута name, х - число пикселей от левого края изображения, а у - число пикселей от верхней кромки изображения. Это позволяет варьировать реакцию сервера от координат места, где была нажата кнопка мышки. | ||
reset | Создает кнопку сброса. При нажатии этой кнопки пользователем всем controls формы присваиваются исходные значения, заданные атрибутом value. Пара имя/значение кнопки reset вместе с формой не пересылается. | ||
button | Создает кнопку, которая не имеет заранее определенной функции. Эта функция определяется скриптом клиента, который запускается при нажатии этой кнопки. Например, создадим кнопку, которая вызывает функцию verify: | ||
<input type="button" value="click me" onclick="verify()"> | |||
hidden | Создает элемент, не видимый при работе агента пользователя. Однако, имя и значение элемента передаются серверу вместе с формой. Эта форма controls используется для запоминания информации в паузах между обменами клиент/сервер. Следующий control типа hidden, тем не менее, должен передавать свое значение вместе с формой. | ||
<input type="password" style="display:none" | |||
name="invisible-password" | |||
value="mypassword"> | |||
file | Позволяет пользователю присоединить содержимое файла к форме. |