Witam.
Próbowałem zrobić skrypt formularza tak aby na bierząco była sprawdzana poprawność wpisanej wartości. Do tego celu skorzystałem ze skryptu znajdującego sie w książce:"Ajax - niezbędnik projektanta dynamicznych aplikacji" autorstwa Michaela Morrisona. Wszystko działa dobrze do czasu aż w dwóch polach nie skorzystam z tego samego sposobu sprawdzania. Problem polega na tym że wtedy sprawdza tylko pierwsze pole, drugiego nie sprawdza dlatego zże w span jest to samo id, ale nie za bardzo mam możliwość zmiany tego id ponieważ odnosi się ono do funkcji js. Formularz ma być generowany dynamicznie przez php wg wymagań indywidualnych.
Przykładowy kod pliku html:
  1. <head>
  2. <title>Sprawdzacz</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  4.  
  5. <style type="text/css">
  6. div { padding-bottom:5px; }
  7. span.help { color:#AA0000; font-style:italic; }
  8. </style>
  9. <script type="text/javascript" src="validatekit.js"> </script>
  10. </head>
  11. <body onload="document.getElementById('something').focus()">
  12. <div id="ajaxState" style="display:none; font-style:italic"></div>
  13. <br />
  14. <div>
  15. Wpisz numer telefonu:
  16. <input id="phone" type="text" size="32" onblur=
  17. "validatePhone(this, document.getElementById('phone_help'))" />
  18. <span id="phone_help" class="help"></span>
  19. </div>
  20. <div>
  21. Wpisz drugi numer telefonu:
  22. <input id="phone" type="text" size="32" onblur=
  23. "validatePhone(this, document.getElementById('phone_help'))" />
  24. <span id="phone_help" class="help"></span>
  25. </div>
  26. </body>
  27. </html>


a kod załaczonego pliku js:
  1. /* Ajax - zestaw narzędzi */
  2. /* Funkcje do sprawdzania poprawności */
  3.  
  4. function validateNonEmpty(inputControl, helpControl) {
  5. // Sprawdź czy pole zawiera jakikolwiek tekst
  6. return validateRegEx(/.+/,
  7. inputControl.value, helpControl,
  8. "Proszę wprowadzić wartość.");
  9. }
  10.  
  11. function validateInteger(inputControl, helpControl) {
  12. // Najpierw sprawdź czy pole zawiera dane
  13. if (!validateNonEmpty(inputControl, helpControl))
  14. return false;
  15.  
  16. // Następnie sprawdź czy w polu wpisana jest liczba całkowita
  17. return validateRegEx(/^[-]?\d*$/,
  18. inputControl.value, helpControl,
  19. "Proszę wprowadzić liczbę całkowitą.");
  20. }
  21.  
  22. function validateNumber(inputControl, helpControl) {
  23. // Najpierw sprawdź czy pole zawiera dane
  24. if (!validateNonEmpty(inputControl, helpControl))
  25. return false;
  26.  
  27. // Potem sprawdź czy w polu wpisana jest liczba
  28. return validateRegEx(/^[-]?\d*\.?\d*$/,
  29. inputControl.value, helpControl,
  30. "Proszę wprowadzić liczbę.");
  31. }
  32.  
  33. function validateZipCode(inputControl, helpControl) {
  34. // Najpierw sprawdź czy pole zawiera dane
  35. if (!validateNonEmpty(inputControl, helpControl))
  36. return false;
  37.  
  38. // Potem sprawdź czy w polu wpisany jest kod pocztowy
  39. return validateRegEx(/^\d{5}$/,
  40. inputControl.value, helpControl,
  41. "Proszę wprowadzić pięciocyfrowy kod pocztowy.");
  42. }
  43.  
  44. function validatePhone(inputControl, helpControl) {
  45. // Najpierw sprawdź czy pole zawiera dane
  46. if (!validateNonEmpty(inputControl, helpControl))
  47. return false;
  48.  
  49. // Potem sprawdź czy w polu wpisany jest numer telefonu
  50. return validateRegEx(/^\d{3}-\d{3}-\d{4}$/,
  51. inputControl.value, helpControl,
  52. "Prosze wprowadzić numer telefonu (na przykład, 123-456-7890).");
  53. }
  54.  
  55. function validateEmail(inputControl, helpControl) {
  56. // Najpierw sprawdź czy pole zawiera dane
  57. if (!validateNonEmpty(inputControl, helpControl))
  58. return false;
  59.  
  60. // Potem sprawdź czy w polu wpisany jest adres e-mail
  61. return validateRegEx(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
  62. inputControl.value, helpControl,
  63. "Proszę wprowadzić adres e-mail (na przykład, john@doe.com).");
  64. }
  65.  
  66. function validateDate(inputControl, helpControl) {
  67. // Najpierw sprawdź czy pole zawiera dane
  68. if (!validateNonEmpty(inputControl, helpControl))
  69. return false;
  70.  
  71. // Potem sprawdź czy w polu wpisana jest data
  72. return validateRegEx(/(0[1-9]|[12][0-9]|3[01])[- /-](0[1-9]|1[012])[- /-](19|20)\d\d/,
  73. inputControl.value, helpControl,
  74. "Proszę wprowadzić datę (na przykład, 14.01.1975).");
  75. }
  76.  
  77. function validateRegEx(regex, input, helpControl, helpMessage) {
  78. if (!regex.test(input)) {
  79. if (helpControl != null)
  80. helpControl.innerHTML = helpMessage;
  81. return false;
  82. }
  83. else {
  84. if (helpControl != null)
  85. helpControl.innerHTML = "";
  86. return true;
  87. }
  88. }


pozdrawiam i proszę o pomoc.