Дескрипторы и атрибуты, используемые для создания форм
Как уже упоминалось выше в этой главе, помимо текстовых полей, переключателей и флажков, используемых для запроса данных у посетителя, в форму можно помещать кнопки, текст, графические изображения и другие объекты Web-страниц. Начальный и конечный HTML-дескрипторы формы (<form></form>) указывают Web-браузеру, какую часть HTML-файла включать в форму. Как известно, Web-форма, как и HTML-таблица, представляет собой своего рода"контейнер". Начальный и конечный дескрипторы таблицы (<table></table>)используются для описания содержимого, которое должно быть помещено Web-браузером в таблицу. Аналогично, начальный и конечный дескрипторы формы(<form></form>) ограничивают содержимое, которое должно быть помещеноWeb-браузером в форму. Основное различие между формами и таблицами состоит в том, что браузер в HTML-таблице просто выводит данные на экран, в товремя как форма не только выводится на экран, но и используется для ввода данных в элементы формы и передачи результатов Web-серверу для последующей обработки. (Более того, на одной Web-странице можно разместить несколько таблиц и несколько форм; тем не менее, несмотря на то, что можно организовать вложенные таблицы, нет никакой возможности внедрить одну форму в другую;)
Например, в этой главе вы узнаете, как заменить следующие заполнители полями ввода и кнопками, находящимися между начальным и конечным дескрипторами формы (<form></form>), для создания формы, которая позволит получать от посетителей необходимую вам информацию:
<form name="ExampleForm"
action=http ://www.NVBizNet2.com/__scripts/__pl/FrmScrpt.CGI
method="POST" value="Подсказка по заполнению формы"
enctype="application/x-www-form-urlencoded">
<p>Поля ввода формы плюс различные кнопки</p>
<p>Кнопки RESET и SUMBIT формы</p>
</form>
Как показано в примере, дескрипторы <form>, как правило, содержат следующие атрибуты:
- action. Унифицированный указатель информационного ресурса (UniformResource Locator, URL), или Web-адрес, по которому Web-браузер передает результаты заполнения формы после нажатия посетителем кнопки Submit.Например, для передачи результатов формы (т.е. введенной информации и выбранных на форме элементов) в виде сообщения электронной почты можно установить значения атрибута action равным текстовой строке, содержащей ключевое слово mailto: и собственно адрес электронной почты. Аналогично, для передачи результатов формы программе для дальнейшей обработки необходимо установить значение атрибута action равным URL сценария, отвечающего за передачу результатов формы требуемой программе.
- enctype. Задает Web-браузеру метод кодирования, который должен использоваться при передаче данных формы CGI-сценарию на Web-сервере. Как правило, значение атрибута encode устанавливается равным "application/x-www-form-urlencoded".
- id. Используется для задания форме уникального имени, по которому на форму можно ссылаться в сценарии. Если имя формы не задано (с помощью атрибутов id или name), в сценарии на форму потребуется ссылаться по ее номеру. Например, в JavaScript-коде ссылка на первую форму на Web-странице будет выглядеть как document.forms [0], на вторую — document.forms [1], На третью — document.forms [2] и т.д. Если же всем формам на странице присвоены уникальные идентификаторы, в сценарии можно будет ссылаться на формы, используя следующий синтаксис:document.formID (или просто formID).
- method. Указывает метод, который браузер будет применять для передачи данных формы по URL-адресу, указанному в атрибуте action. Атрибут method может принимать одно из двух значений: POST ИЛИ GET. Если используется GET-метод, Web-браузер передает данные формы Web-серверу в конце URL-адреса, указанного в атрибуте action дескриптора <form>.Если же установлен POST-метод, данные передаются Web-серверу в виде отдельного HTML-сообщения. В соответствии со стандартами HTML метод GET должен использоваться, если форма идемпотентна, т.е. когда сценарий обработки результатов формы не вносит изменений в хранящиеся на сервере данные. Например, формы, применяемые для поиска в базах данных, будут использовать GET-метод. Если же при обработке результатов формы возникают побочные эффекты, в частности, изменение данных, хранимых в СУБД, должен использоваться POST-метод.
ПРИМЕЧАНИЕ:
Не используйте GET-метод для передачи результатов формы, запрашивающей пароль. При использовании GET-метода введенный посетителем пароль будет включен в URL-адрес и зафиксирован в нескольких местах, включая журнальные файлы Web-браузера и Web-сервера.
- name. Текстовая строка, которая может использоваться для ссылки на форму по имени в сценарии, находящемся на Web-странице. Если имя формы не задано (с помощью атрибутов id или name), в сценарии на форму нужно ссылаться по ее номеру. Например, если каждой форме на Web-странице присвоено уникальное имя или идентификатор, сценарий может, ссылаться на форму как document.formname (или document.formID).
- onReset. Имя функции (т.е. сценария, содержащегося на Web-странице),которую Web-браузер должен запустить при нажатии посетителем кнопки Reset. Функция должна возвращать значение True или False. Если возвращается значение True, Web-браузер удалит введенные в форму данные посетителя и вернет форму в исходное состояние. Если же функция возвращает False, Web-браузер не будет возвращать поля формы в исходное состояние.
- onSubmit. Имя функции (т.е. сценария, содержащегося на Web-странице), которую Web-браузер должен запустить при нажатии посетителем кнопки Submit. Как правило, функция, указанная в атрибуте onSubmit, используется для проверки результатов формы перед их передачей Web-серверу для обработки. Если функция возвращает значение False, Web-браузер не будет передавать результаты формы серверу. Если же возвращается значение True, Web-браузер передает результаты формы Web-серверу для обработки с помощью CGI-сценария или другой программы, указанной в атрибуте action дескриптора <form>.
- target. Имя окна, в котором Web-браузер будет выводить страницу подтверждения передачи результатов формы.
- title. Текст (например, имя или описание формы), которые Web-браузер будет выводить на экран на несколько секунд, когда посетитель переместит указатель мыши на форму.
Первые семь советов, которые будут приведены после этого вводного раздела о HTML-формах, расскажут о создании на форме полей ввода текста, флажков, переключателей, меню выбора, кнопок сброса Reset и передачи Submit. Несколько остальных советов подробно остановятся на назначении атрибутов дескриптора <form>. А сейчас самое главное понять, что объекты в форму помещаются путем вставки соответствующих им HTML-дескрипторов между начальным и конечным дескрипторами формы (<form></form>). Более того, каждая форма должна содержать кнопку передачи данных, при нажатии на которую Web-браузер получает команду на передачу результатов формы (т.е. ее данных) по URL-адресу, указанному в атрибуте action дескриптора <form> формы.