Элементы HTML_формы позволяют создавать простые пользовательские интер_ фейсы для JavaScript_программ. На рис. 18.1 показана сложная форма, содер_ жащая минимум по одному элементу каждого из базовых типов. На тот случай,
Рис. 18.1. Элементы HTML'формы
456 Глава 18. Формы и элементы форм
если вы еще не знакомы с элементами HTML_форм, на рисунке приведены номе_ ра, идентифицирующие каждый тип элементов. Мы завершим этот раздел при_ мером 18.1, демонстрирующим HTML_ и JavaScript_код, используемый для соз_ дания показанной на рисунке формы и подключения обработчиков событий ко всем элементам формы.
В табл. 18.1 перечислены типы элементов формы, доступных HTML_дизайнерам и JavaScript_программистам. В первом столбце таблицы представлены типы эле_ ментов формы, во втором – HTML_теги, определяющие элементы данного типа, в третьем – значения свойства type для элементов каждого типа. Как мы видели, каждый объект Form содержит массив elements[], в котором хранятся объекты, представляющие элементы формы. В каждом из этих элементов имеется свойст_ во type, которое может применяться, чтобы отличить один тип элементов от дру_ гого. По свойству type неизвестного элемента формы JavaScript_код может опре_ делить тип элемента и выяснить, что можно делать с этим элементом. И нако_ нец, четвертый столбец таблицы предоставляет наиболее важный или наиболее часто используемый обработчик события для элемента данного типа, а пятый – краткое описание каждого типа.
Обратите внимание: имена «Button» (кнопка), «Checkbox» (флажок) и прочие из первого столбца табл. 18.1 могут не соответствовать фактическим названиям клиентских JavaScript_объектов. Полное описание элементов различных типов вы найдете в части IV книги в разделах Input, Option, Select и Textarea. Кроме того, эти элементы форм подробно обсуждаются в этой главе далее.
Таблица 18.1. Элементы HTML'форм
Объект
HTML2тег
Свойство
Событие
Описание
type
Button
<inputtype="button">
"button"
onclick
Кнопка
или
<button type="button">
Checkbox
<input type="checkbox">
"checkbox"
onclick
Флажок
File
<input type="file">
"file"
onchange
Поле для ввода име_
ни файла, загружае_
мого на веб_сервер
Hidden
<input type="hidden">
"hidden"
Обработчиков
Данные,
сохраняе_
событий нет
мые вместе с фор_
мой, но невидимые
пользователю
Option
<option>
Нет
Обработчики со_
Один элемент объ_
бытий подклю_
екта Select
чаются к объек_
ту Select, а не к
отдельным объ_
ектам Option
Password
<input type="password">
"password"
onchange
Поле для ввода па_
роля
(набранные
символы невидимы)
18.2. Определение элементов формы
Объект
HTML2тег
Свойство
Событие
Описание
type
Radio
<input type="radio">
"radio"
onclick
Переключатель –
одновременно
мо_
жет быть
установ_
лен только один
Reset
<input
type="reset">
"reset"
onclick
Кнопка,
очищаю_
или
щая значения фор_
<button type="reset">
мы
Select
<Select>
"select_one"
onchange
Список
или выпа_
дающее меню, в ко_
тором может
быть
выбран
один
эле_
мент (см. также объ_
ект Option)
Select
<select multiple>
"select_mul_
onchange
Список,
в
котором
tiple"
может быть выбрано
несколько
элемен_
тов (см. также объ_
ект Option).
Submit
<input
type="submit">
"submit"
onclick
Кнопка для переда_
или
чи данных формы
<button type="submit">
Text
<input type="text">
"text"
onchange
Однострочное
поле
ввода
Textarea
<textarea>
"textarea"
onchange
Многострочное
по_
ле ввода
Теперь, получив представление о различных типах элементов формы и HTML_те_ гах, используемых для их создания, посмотрим на HTML_код из примера 18.1, предназначенный для создания формы, которая показана на рис. 18.1. Хотя большую часть примера занимает HTML_код, в нем также есть JavaScript_код, в котором определены обработчики событий каждого из элементов формы. Вы заметите, что обработчики событий не определяются как HTML_атрибуты. Здесь ими являются JavaScript_функции, присваиваемые свойствам объектов из мас_ сива elements[] формы. Все обработчики событий вызывают функцию report(), содержащую код, который работает с разными элементами формы. В следую_ щем разделе этой главы описано все, что вам надо знать для понимания работы функции report().
Пример 18.1. HTML'форма, содержащая все виды элементов
<form name="everything"> <!__ HTML_форма "все в одном"... __> <table border="border" cellpadding="5"> <!__ в виде большой HTML_таблицы __> <tr>