Элемент
<b><input type="password"></b>
- это модификация однострочного текстового поля ввода, в котором вместо вводимого пользователем текста отображаются символы звездочек. Как можно заключить из имени элемента, его можно использовать, чтобы дать пользователю возможность вводить пароли, не беспокоясь о том, что другие прочитают их через плечо. Следует понимать, что элемент
<b>Password</b>
защищает введенные пользователем данные от любопытных глаз, но при отправке данных формы эти данные никак не шифруются (если только отправка не выполняется по безопасному HTTPS-соединению) и при передаче по сети могут быть перехвачены.
Наконец, элемент
<b><input type="file"></b>
предназначен для ввода пользователем имени файла, который должен быть выгружен на веб-сервер. По существу, это однострочное текстовое поле, совмещенное со встроенной кнопкой, выводящей диалог выбора файла. У элемента выбора файла, как и у однострочного текстового поля, есть обработчик событий
<b>onchange</b>
. Однако, в отличие от текстового поля ввода, свойство
<b>value</b>
элемента выбора файла доступно только для чтения. Это не дает злонамеренным JavaScript-программам обмануть пользователя, выгрузив файл, не предназначенный для отправки на сервер.
Различные текстовые элементы ввода определяют обработчики событий on
<b>keypress, onkeydown</b>
и
<b>onkeyup</b>
. Можно вернуть
<b>false</b>
из обработчиков событий
<b>onkeypress</b>
или
<b>onkeydown</b>
, чтобы запретить обработку нажатой пользователем клавиши. Это может быть полезно, например, когда требуется заставить пользователя вводить только цифры. Этот прием демонстрируется в примере 17.6.
15.9.7. Элементы Select и Option
Элемент
<b>Select</b>
представляет собой набор вариантов (представленных элементами
<b>Option</b>
), которые могут быть выбраны пользователем. Броузеры обычно отображают элементы
<b>Select</b>
в виде раскрывающихся меню, но, если указать в атрибуте
<b>size</b>
значение больше чем 1, они будут отображать их в виде списков (возможно, с полосами прокрутки). Элемент
<b>Select</b>
может работать двумя сильно различающимися способами, а выбор того или иного способа определяется значением свойства
<b>type</b>
.
Если в теге
<b><select></b>
определен атрибут
<b>multiple</b>
, пользователь сможет выбрать несколько вариантов, а свойство
<b>type</b>
объекта
<b>Select</b>
будет иметь значение «select-multiple». В противном случае, если атрибут
<b>multiple</b>
отсутствует, может быть выбран только один вариант и свойство
<b>type</b>
будет иметь значение «select-one».
В некотором смысле элемент с возможностью множественного выбора похож на набор флажков, а элемент без такой возможности - на набор радиокнопок. Однако варианты выбора, отображаемые элементом
<b>Select</b>
, не являются кнопками-переключателями: они определяются с помощью тега
<b><option>.</b>
Элемент
<b>Select</b>
определяет свойство
<b>options</b>
, которое является объектом, подобным массиву, хранящим объекты
<b>Option</b>
.
Когда пользователь выбирает тот или иной вариант или отменяет выбор, элемент
<b>Select</b>
вызывает свой обработчик событий
<b>onchange</b>
. Для элементов
<b>Select</b>
с возможностью выбора единственного варианта, доступное только для чтения свойство
<b>selectedlndex</b>
определяет выбранный в данный момент вариант. Для элементов
<b>Select</b>
с возможностью множественного выбора одного свойства
<b>selectedlndex</b>
недостаточно для представления полного набора выбранных вариантов. В этом случае для определения выбранных вариантов следует в цикле перебрать элементы массива
<b>options[]</b>
и проверить значения свойства
<b>selected</b>
каждого объекта
<b>Option</b>
.
Кроме свойства
<b>selected</b>
у каждого объекта
<b>Option</b>
есть свойство
<b>text</b>
, задающее строку текста, которая отображается в элементе
<b>Select</b>
для данного варианта. Используя это свойство, можно изменить видимый пользователем текст. Свойство
<b>value</b>
представляет доступную для чтения и записи строку текста, который отсылается на веб-сервер при передаче данных формы. Даже если вы пишете исключительно клиентскую программу и ваши формы никуда не отправляются, свойство
<b>value</b>
(или соответствующий ей HTML-атрибут
<b>value</b>
) можно использовать для хранения данных, которые потребуются после выбора пользователем определенного варианта. Обратите внимание, что элемент
<b>Option</b>
не определяет связанных с формой обработчиков событий; используйте вместо этого обработчик
<b>onchange</b>
соответствующего элемента
<b>Select</b>
.
Помимо задания свойства
<b>text</b>
объектов
<b>Option</b>
имеются способы динамического изменения выводимых в элементе
<b>Select</b>
вариантов с помощью особых возможностей свойства
<b>options</b>
, которые ведут свое существование с самого начала появления поддержки клиентских сценариев. Можно обрезать массив элементов
<b>Option</b>
, установив свойство
<b>options.length</b>
равным требуемому количеству вариантов, или удалить все объекты
<b>Option</b>
, установив значение свойства
<b>options.length</b>
равным нулю. Можно удалять отдельные объекты
<b>Option</b>
из элемента
<b>Select</b>
, присваивая элементам массива
<b>options[]</b>
значение null. В этом случае удаляются соответствующие объекты
<b>Option</b>
, а все элементы, расположенные в массиве
<b>options[]</b>
правее, автоматически сдвигаются влево, заполняя опустевшее место.