Обработка форм
Однако одной проверки вводимых символов в соответствующее поле может и не хватить. Возраст человека должен быть правдоподобным. В текущем варианте ничто не помешает человеку внести в поле ввода значение, состоящее, например, из пяти цифр. Понятно, что полученное число будет иметь весьма отдаленное отношение к реальному возрасту удаленного пользователя. Поэтому было бы неплохо после ввода числа пользователем проверить, что оно находится в промежутке между, скажем, десятью и девяноста. Код документа с подобным скриптом приведен в листинге 7.9.
Листинг 7.9
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <title>Обработка Форм</title> <script language="javascript"> //<!-- function checkdata() { if ((event.srcElement.value < 10) || (event.srcElement.value > 90)) alert("Введите правильный возраст"); } //--> </script></head> <body> <form> <p>Возраст <input type="text" name="f1" onChange="checkdata () "> </p> <p>Имя и фамилия <input type="text" name="f2"> </p> <p> <input type="submit" value="Отправить"> </p> </form></body> </html>В этом документе для проверки значения, введенного пользователем, мы используем событие onChange, которое инициируется после того, как пользователь перейдет от поля ввода к какому-либо другому органу правления Web-страницы. То есть, это событие отрабатывается непосредственно перед событием onBlur.
Итак, пользователь ввел некоторое значение в интересующее нас поле. Теперь мы перехватываем событие onChange и проводим проверку введенного значения. Значение мы получаем в качестве свойства value. Доступ к текущему полю получим при помощи свойства srcElement объекта event. А затем остается при помощи условного оператора if проверить, удовлетворяет ли введенное значение необходимым условиям. В том случае, если значение не удовлетворяет наложенным условиям, мы при помощи оператора alert отображаем информационное окно с соответствующим текстом (рис. 7.9).
При помощи подобной технологии мы можем проверять все вводимые пользователем данные на соответствие неким условиям, которые определяются разработчиком Web-страницы. Как мы уже говорили, это помогает избежать досадных ошибок, которые неизбежно будут возникать из-за невнимательности пользователей, без дополнительного обращения к приложению, обрабатывающему данные.

Рис. 7.9. Окно браузера с результатом отображения файла, приведенного в листинге 7.9, после того как пользователь внес неправильное значение в поле ввода
Но рассмотренные нами способы работы с формами и органами ввода не исчерпывают весь спектр возможностей DHTML в этой области. Мы можем динамически изменять содержимое формы в зависимости от действий пользователя.
Предположим, что нам необходимо провести на сайте некий опрос. При этом для мужчин и женщин используются различные наборы вопросов. Мы можем либо создать две отдельные Web-страницы, одну для мужчин и одну для женщин, с наборами вопросов, и два приложения, обрабатывающих эти формы. А можем при помощи DHTML модифицировать одну и ту же Web-страницу в зависимости от указанного пола удаленного пользователя. Код подобного HTML-документа приведен в листинге 7.10.
Листинг 7.10
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http: //www.w3.oi;g/TR/html4/strict.dtd"><html> <head> <title>Обработка форм</title> <script language="javascript"> //<!-- function changelist(x) { if (x == 1) { document.all.select1.options[0].text = "Ольга"; document.all.select1.options[1].text = "Елена"; document.all.select1.options[2].text = "Лариса"; p3.innerText = "Выберите Ваше любимое женское имя"; } if (x == 2) { document.all.select1.options[0].text = "Игорь"; document.all.select1.options[1].text = "Алексей"; document.all.select1.options[2].text = "Олег"; p3.innerText = "Выберите Ваше любимое мужское имя"; } } // --> </script></head> <body> <form> <p>Ваш пол:</p> <p>Мужской <input type="radio" name="group1" value="male" onClick="changelist(1)" checked> </p> <p>Женский <input type="radio" name="group1" value="female" onClick="changelist(2)"> </p> <p id="p3">Выберите Ваше любимое женское имя</p> <p> <select name="menu" id="select1"> <option value="1">Ольга</option> <option value="2">Елена</option> <option value="3">Лариса</option> </select> </p> <input type="submit" value="Подтвердить"> </form></body> </html>