JavaScript_объект Form представляет HTML_форму. Как уже говорилось в главе 15, формы доступны в виде элементов массива forms[], являющегося свойством объ_ екта Document. Формы расположены в этом массиве в том же порядке, что и в до_ кументе. Следовательно, элемент document.forms[0] ссылается на первую форму документа. На последнюю форму документа можно сослаться посредством сле_ дующего выражения:
document.forms[document.forms.length_1]
Наиболее интересное свойство объекта Form – массив elements[], содержащий Java_ Script_объекты различных типов, представляющие различные элементы ввода формы. Элементы этого массива также располагаются в том же порядке, в кото_ ром они расположены в документе. На третий элемент второй формы документа в текущем окне можно сослаться так:
document.forms[1].elements[2]
Остальные свойства объекта Form менее важны. Свойства action, encoding, method
и target соответствуют одноименным атрибутам тега <form>. Все эти свойства
и атрибуты позволяют контролировать, как данные формы отправляются на веб_сервер и где будут отображаться результаты; следовательно, они полезны только в том случае, когда форма действительно отсылается серверной програм_ ме. Полное описание этих атрибутов вы найдете в специализированных издани_ ях, посвященных языку HTML или разработке серверных программ. Стоит от_ метить, что все свойства Form – это строки, доступные и для чтения, и для запи_ си, так что JavaScript_программа может динамически устанавливать их значе_ ния перед отправкой формы.
До появления JavaScript данные формы передавались при щелчке на специаль_ ной кнопке Submit, а для сброса значений элементов формы применялась специ_ альная кнопка Reset. JavaScript_объект Form поддерживает два метода, submit() и reset(), служащие той же цели. Вызов метода submit() формы передает данные формы, а вызов reset() сбрасывает значения элементов формы.
В дополнение к методам submit() и reset() объект Form предоставляет обработчик события onsubmit, предназначенный для обнаружения факта отправки данных формы, и обработчик события onreset, предназначенный для обнаружения фак_ та сброса значений полей формы. Обработчик onsubmit вызывается непосредст_ венно перед передачей данных формы; он может отменить передачу, вернув зна_ чение false. Это дает возможность JavaScript_программе проверить введенные пользователем данные на наличие ошибок, чтобы предотвратить передачу серве_
18.2. Определение элементов формы
ру неполных или неверных данных. В конце этой главы мы увидим пример та_ кой проверки. Обратите внимание: обработчик onsubmit вызывается только при щелчке на кнопке Submit. Вызов метода submit() формы не приводит к вызову об_ работчика onsubmit.
Обработчик события onreset работает схожим образом. Он вызывается непосред_ ственно перед очисткой формы и может предотвратить очистку, вернув значение false. Это позволяет JavaScript_программе выдать запрос на подтверждение очи_ стки данных, что может быть полезным в случае большой или подробной фор_ мы. Это можно сделать с помощью следующего обработчика события:
<form...
onreset="return confirm('Действительно удалить ВСЕ данные и начать сначала?')"
>
Как и обработчик onsubmit, onreset вызывается только при щелчке на кнопке Re_ set. Вызов метода reset() формы не приводит к вызову onreset.