Элементы форм также возбуждают событие
<b>focus</b>
, когда они получают фокус ввода, и событие
<b>blur</b>
, когда теряют его.
Важно знать, что внутри обработчика события ключевое слово
<b>this</b>
всегда ссылается на элемент документа, вызвавший данное событие (подробнее об этом будет рассказываться в главе 17). Во всех элементах форм имеется свойство
<b>form</b>
, ссылающееся на форму, в которой содержится элемент, поэтому обработчики событий элемента формы всегда могут обратиться к объекту
<b>Form</b>
, как к
<b>this.form</b>
. Сделав еще один шаг, мы можем сказать, что обработчик событий для одной формы может ссылаться на соседний элемент формы, имеющий имя х, как
<b>this.form.х</b>
.
15.9.4. Кнопки
Кнопки являются одними из наиболее часто используемых элементов форм, т. к. они предоставляют понятный визуальный способ вызова пользователем какого-либо запрограммированного сценарием действия. Элемент кнопки не имеет собственного поведения, предлагаемого по умолчанию, и не представляет никакой пользы без обработчика события
<b>onclick</b>
. Кнопки, определяемые с помощью элементов
<b><input></b>
, отображают простой текст, содержащийся в их свойстве
<b>value</b>
.
Кнопки, определяемые с помощью элементов
<b><button>,</b>
отображают содержимое элемента.
Обратите внимание, что гиперссылки предоставляют такой же обработчик событий
<b>onclick</b>
, как и кнопки. Когда действие, выполняемое обработчиком
<b>onclick</b>
, можно классифицировать как «переход по ссылке», используйте ссылку. В противном случае используйте кнопку.
Элементы
<b>Submit</b>
и
<b>Reset</b>
очень похожи на элементы-кнопки, но имеют связанные с ними действия, предлагаемые по умолчанию (передача или очистка формы). Если обработчик событий
<b>onclick</b>
возвращает
<b>false</b>
, стандартное действие этих кнопок, предусмотренное по умолчанию, не выполняется. Обработчик
<b>onclick</b>
элемента
<b>Submit</b>
можно использовать для проверки введенных значений, но обычно это делается в обработчике
<b>onsubmit</b>
самой формы.
В четвертой части книги нет описания элемента
<b>Button</b>
. Описание всех элементов-кнопок, включая описание элементов, создаваемых с помощью тега
<b><button>,</b>
вы найдете в разделе, посвященном элементу
<b>Input</b>
.
15.9.5. Переключатели и флажки
Флажки и радиокнопки имеют два визуально различимых состояния: они могут быть либо установлены, либо сброшены. Пользователь может изменить состояние такого элемента, щелкнув на нем. Радиокнопки обычно объединяются в группы связанных элементов, имеющих одинаковые значения HTML-атрибута
<b>name</b>
. При установке одной из радиокнопок предыдущая установленная в группе радиокнопка сбрасывается. Флажки тоже часто объединяются в группы с общим значением атрибута
<b>name</b>
, и, когда вы обращаетесь к ним по имени, необходимо помнить, что вы получаете в ответ объект, подобный массиву, а не отдельный элемент.
И флажки, и переключатели имеют свойство
<b>checked</b>
. Это доступное для чтения и записи логическое значение определяет, отмечен ли элемент в данный момент. Свойство
<b>defaultChecked</b>
представляет собой доступное только для чтения логическое значение, содержащее значение HTML-атрибута
<b>checked</b>
: оно определяет, должен ли элемент отмечаться, когда страница загружается в первый раз.
Флажки и радиокнопки сами не отображают какой-либо текст и обычно выводятся вместе с прилегающим к ним HTML-текстом (или со связанным тегом
<b><label></b>
). Это значит, что установка свойства
<b>value</b>
элемента флажка или радиокнопки не изменяет внешнего вида элемента. Свойство
<b>value</b>
можно установить, но это изменит лишь строку, отсылаемую на веб-сервер при передаче данных формы.
Когда пользователь щелкает на флажке или радиокнопке, элемент вызывает свой обработчик
<b>onclick</b>
. Если состояние флажка или радиокнопки изменяется в результате щелчка мышью, они также вызывают обработчик событий
<b>onchange</b>
. (При этом радиокнопки, изменяющие состояние в результате щелчка на другой радиокнопке, не вызывают обработчик
<b>onchange</b>
.)
15.9.6. Текстовые поля ввода
Однострочные текстовые поля ввода
<b>Text</b>
применяются в HTML-формах и JavaScript-программах, пожалуй, чаще других. Они позволяют пользователю ввести короткий однострочный текст. Свойство
<b>value</b>
представляет текст, введенный пользователем. Установив это свойство, можно явно задать выводимый текст.
Определяемый стандартом HTML5 атрибут
<b>placeholder</b>
позволяет указать строку приглашения к вводу, которая будет отображаться в поле ввода до того момента, пока пользователь не введет какой-нибудь текст:
<b>Дата прибытия: <input type="text" name="arrival" placeholder="yyyy-mm-dd"></b>
Обработчик событий
<b>onchange</b>
текстового поля ввода вызывается, когда пользователь вводит новый текст или редактирует существующий, а затем указывает, что он завершил редактирование, убрав фокус ввода из текстового поля.
Элемент
<b>Textarea</b>
(многострочное текстовое поле ввода) очень похож на элемент
<b>Text</b>
за исключением того, что разрешает пользователю ввести (a JavaScript-npoграмме вывести) многострочный текст. Многострочное текстовое поле создается тегом
<b><textarea>,</b>
синтаксис которого существенно отличается от синтаксиса тега
<b><input>,</b>
используемого для создания однострочного текстового поля. (Подробнее об этом см. в разделе с описанием элемента
<b>Textarea</b>
в четвертой части книги.) Тем не менее эти два типа элементов ведут себя очень похожим образом. Свойство
<b>value</b>
и обработчик событий
<b>onchange</b>
элемента
<b>Textarea</b>
можно использовать точно так же, как в случае с элементом
<b>Text</b>
.