Статьи о Web дизайне

         

Универсальная функция проверки



Универсальная функция проверки

Если нам необходимо проверить всего два или три поля, то с таким методом проверки "по одиночке" еще можно смириться, но что, если их несколько десятков? А ведь такое не редкость - особенно в сложных анкетах. Поэтому мы немного модифицируем нашу функцию, чтобы она не зависела от количества проверяемых полей.

Первым делом, мы создадим массив, где перечислим имена всех полей, которые требуют проверки: required = new Array("name", "email");

Такой подход позволит нам очень легко добавлять и модифицировать список обязательных полей без непосредственного изменения кода самой функции.

Дополнительно к вышеописанному массиву, мы добавим еще один, который будет содержать текст ошибки для конкретного поля: required_show = new Array("Ваше имя", "электронный адрес");

Это позволит нам свободно варьировать текст об ошибках и правильно пользоваться русским языком, а не удовольствоваться неудобоваримыми фразами типа "name не введен".

Имея массив обязательных для заполнения полей, всю проверку можно осуществлять в цикле. Вот как будет выглядеть модифицированная функция проверки: <script language="JavaScript"> <!--required = new Array("name", "email"); required_show = new Array("Ваше имя", "электронный адрес");function SendForm () {var i, j;for(j=0; j<required.length; j++) { for (i=0; i<document.forms[0].length; i++) { if (document.forms[0].elements[i].name == required[j] && document.forms[0].elements[i].value == "" ) { alert('Пожалуйста, введите ' + required_show[j]);


document.forms[0].elements[i].focus(); return false; } } }return true; }//--></script>

В цикле происходит проверка всех полей формы на совпадение с "обязательными". В случае, если совпадение произошло, проверка осуществляется аналогично тому, как это было описано выше, но с одним нюансом - введение массива с сообщениями об ошибках потребовало небольшой модификации функции alert(), так что теперь текст ошибки напрямую зависит от имени поля.

Вот, в общем-то, и все. Данная функция вполне универсальна и с минимальными корректировками (в сущности - содержимое двух массивов) может быть адаптирована к любой форме.

Архив с примером скрипта, рассмотренного в данной статье, можно взять отсюда.



Содержание раздела