Часто спрашиваеться проверка формы, да так что бы расширяемо и универсально было. Задача очень проста если свести всю проверку к регам, но сложна если вносить зависимости между полями, сложные методы проверок и т.п.
Так случилось что мне потребовался валидатор форм, сделал за 5 минут, выкладываю 
| Код | <script type="text/javascript"> //проверка форм, по возвращает [true, false] function checkVorname(form) { var el, pat; for(var i=0; i<form.elements.length; i++) { //пробегаемся по всем элементам формы el=form.elements[i]; //проверяем только текстовые поля и только если есть чего говорить юзеру в случае ошибки if("textarea".indexOf(el.type)<0||el.getAttribute("check_message")==null) continue; if((pat=el.getAttribute("check_pattern"))!=null) { //если задан рег pat=new RegExp(pat, "g"); if(!pat.test(el.value)) { alert(el.getAttribute("check_message")); return false; } } else if(/^\s*$/.test(el.value)) { //иначе просто проверка что поле не пустое alert(el.getAttribute("check_message")); return false; } } return true; } </SCRIPT> </head> <body>
<form action="javascript: alert('OK');" method="post" onSubmit="return checkVorname(this);"> <input type="text" />Skiped<br /> <input type="text" check_message="Please specify your name!" />Name<br /> <input type="text" check_pattern="^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$" check_message="E-Mail is incorrect!" />Email<br /> <textarea check_message="Inser your message!"></textarea><br /> <input type="submit" value="check"> </form> |
Просто подключили функцию выше, а затем в элементах формы задаём аттрибуты:- check_message - если надо ругаться на юзера, то покажем сей мессадж. Если аттрибут не задан, то поле не проверяеться
- check_pattern - проверка по регу, иначе просто постмотрим не пусто ли поле, пробелы игнорируються.
Как видим всё просто, а ответное действие ограничиваеться только показом алерта, что в большинстве случаев достаточно. Иначе изменяем код, идея думаю ясна 
Надеюсь больше вопросов по простейшей валидации форм не будет.
Проблемы: - Не пытайтесь сие поднять под NN4 и другими извратами
 - Валидатор XHTML будет ругаться на наши особенные аттрибуты check_*, потому ваша страничка с его точки зрения станет не валидной. Вообще это бред, т.к. вы имеете право создать любые аттрибуты элементу, парсер их достанет и сделает доступными в скриптах. Так что на свой выбор
 |