Задача: Валидация, динамическая проверка заполнения html форм
Исходник: Простая валидация по шаблону регулярного выражения, язык: javascript [code #161, hits: 16067]
автор: - [добавлен: 28.05.2006]
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2. "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
  6. <meta name="Generator" content='EditPlus 2.20.211'>
  7. <meta name="Author" content='Ciber SLasH'>
  8. <title>JavaScript :: Проверка форм (GET)</title>
  9. <script type='text/javascript'>
  10. /** Проверка форм
  11. @param1 Object — ссылка на элемент FORM;
  12. @param2 Array — массив проверяемых элементов. Пример: ['select', 'input']
  13. */
  14. function checkForm(obj, elems) {
  15. var element, pattern;
  16. for (var i = 0; i < obj.elements.length; i++) { // пробегаемся по всем элементам формы
  17. element = obj.elements[i];
  18. // Проверяем только нужные поля
  19. if (elems != undefined)
  20. if (elems.join().indexOf(element.type) < 0) continue;
  21. // И только если есть чего говорить юзеру в случае ошибки
  22. if (!element.getAttribute("check_message")) continue;
  23. if (pattern = element.getAttribute("check_pattern")) { // если задан рег
  24. pattern = new RegExp(pattern, "g");
  25. if (!pattern.test(element.value)) {
  26. alert(element.getAttribute("check_message"));
  27. element.focus();
  28. return false;
  29. }
  30. } else if(/^\s*$/.test(element.value)) { // иначе просто проверка что поле не пустое
  31. alert(element.getAttribute("check_message"));
  32. element.focus();
  33. return false;
  34. }
  35. }
  36. return true;
  37. }
  38. </script>
  39. </head>
  40. <body>
  41. <form method="GET" action='script.htm' onSubmit='return checkForm(this)'>
  42. <input type="text" name="dummy"> Не проверяется<br>
  43. <input type="text" name="name" check_message="Имя !!!"> Имя<br>
  44. <input type="text" name="e-mail" check_pattern="^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$" check_message="Мыло !!!"> e-mail<br>
  45. <textarea name="message" check_message="Мессага !!!"></textarea><br>
  46. <input type="submit" value="submit">
  47. </form>
  48. </html>

Как видно для проверки правильности заполнения задается непосредственно соответствующий шаблон регулярного выражения.
Если таковой не задан, но есть check_message - то проверка делается просто на пустоту.

Найдено на forum.vingrad.ru
Тестировалось на: IE 6.0 SP2, Mozilla FF 1.5, Opera 8.5

+добавить реализацию