...


Внедрение процедур контроля данных
Теперь рассмотрим, как добавлять процедуры контроля данных в формы. Это можно делать различными способами. В следующем примере используется массив, содержащий имена полей и информацию о необходимых типах контроля. Таким образом, требуется пройти цикл по элементам массива, выбирая подходящую процеду контроля, как показано ниже:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Демонстрация типичной процедуры проверки формы</title>
<meta http-equiv="content-type"
content="text/html; charset=windows-1251" />
<script type="text/javascript">
<!--
var validations = new Array();
// Определение необходимого типа проверки. Каждый элемент массива содержит поле формы для проверки, и выполняется соответствующая процедура проверки. При использовании сценария на новой странице требуется подкорректировать только эту часть программы!
validations[0]=["document.myform.username", "notblank"];
validations[1]=["document.myform.useremail", "validemail"];
validations[2] =["document.myform.favoritenumber", "isnumber"];
// Настройка массива для использования на странице.
function isEmpty(s)
{
if (s == null || s.length == 0)
return true;
// Проверка возвращает true, если есть хотя бы один символ, отличный от символа пустого пространства, т.е. строка не пуста. Если проверка возвращает false, строка является пустой.
return !/\S/.test(s);
}
function looksLikeEmail (field)
{
var s = field.value;
if (isEmpty(s))
{
alert("Адрес не должен быть пустым");
field.focus ();
return false;
} ("Адрес имеет недопустимую форму."); ocus () ; it urn false; >n islnteger (field) и s = field, value; і I (isEmpty(s)) ( alert("Поле не должно оставаться пустым") field, focus () ; return false; < ! (/"-?\d+$/.test(s) ) ) ( alert("Поле должно содержать только цифры"); field, focus () ; return false; I •1 urn true; <:tion validate () аг і; var checkToMake; var field; for (i =0; і < validations.length; i++) field = eval(validations[i][0]); checkToMake = validations[i][1]; switch (checkToMake) case 'notblank1: if (isEmpty (field.value)) { alert("Поле не должно быть пустым"), field, focus () ; return false; break; case 'validemail1: if (! looksLikeEmail (field)) return false; break; case 'isnumber1: if (! islnteger (field) ) return false; if (/[A@]+0\w+/.test(s)) return true; .rn true; 484 Часть IV. Использование JavaScript </script> </head> <body> <form name="myform" id="myform" method="get" action="http://www.javascriptref.com" onsubmit="return validate();"> Имя пользователя: <input type="text" name="username" id="username" size="30" maxlength="60" /> <br /> Адрес электронной почты: <input type="text" name="useremail" id="useremail" size="30" maxlength="90" /> <br /> Любимое число: <input type="text" name="favoritenumber" id="favoritenumber" size="10" maxlength="10 <br /> <input type="submit" уа1ие="0тправить" /> </form> </body> </html>

Приятным моментом является то, что достаточно просто привязать такие прш, дуры к любой странице. Просто разместите сценарий на странице, настройте массЩ validations [ ], чтобы он содержал поля формы, которые требуется контролиром.і 11 и строки, указывающие тип выполняемой проверки, и добавьте вызов validate () і качестве обработчика onsubmi t для формы. Отделение механизмов проверки дани м я (ФУНКЦИЙ Проверки) ОТ ПОЛИТИКИ КОНТРОЛЯ (полей ДЛЯ Проверки И ТИПОВ КОНТ[ открывает возможность повторного использования процедур и ведет к уменьшен! затрат в долгосрочной перспективе.
назад:
далее:



( )


10

?

:










@ 2008-2011 Amber

.