Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] Błąd podczas walidacji formularza.
Forum PHP.pl > Forum > Przedszkole
Cinema Paradiso
Hej,
zawsze do walidacji formularzy stosowałem następujący skrypt js:
  1. function error(tekst)
  2. {
  3. if (errfound) return;
  4. window.alert(tekst);
  5. errfound = true;
  6. }
  7.  
  8. function email_validate(src)
  9. {
  10. var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  11. return regex.test(src);
  12. }
  13.  
  14. function validate2() {
  15. errfound = false;
  16. var bledy = "";
  17. with (document.forms[0])
  18. {
  19. if (od.value == "")
  20. {
  21. document.forms[0].od.style.border = "2px solid #FF0000";
  22. bledy += "Podaj datę przyjazdu.\n";
  23. }else
  24. {
  25. document.forms[0].od.style.border = "0px solid #FFFFFF";
  26. }
  27.  
  28. if (doo.value == "")
  29. {
  30. document.forms[0].doo.style.border = "2px solid #FF0000";
  31. bledy += "Podaj datę wyjazdu.\n";
  32. }else
  33. {
  34. document.forms[0].doo.style.border = "0px solid #FFFFFF";
  35. }
  36.  
  37. if (liczba.value == "")
  38. {
  39. document.forms[0].liczba.style.border = "2px solid #FF0000";
  40. bledy += "Podaj liczbę osób.\n";
  41. }else
  42. {
  43. document.forms[0].liczba.style.border = "0px solid #FFFFFF";
  44. }
  45.  
  46. if (imie.value == "")
  47. {
  48. document.forms[0].imie.style.border = "2px solid #FF0000";
  49. bledy += "Podaj swoje imię.\n";
  50. }else
  51. {
  52. document.forms[0].imie.style.border = "0px solid #FFFFFF";
  53. }
  54.  
  55. if (nazwisko.value == "")
  56. {
  57. document.forms[0].nazwisko.style.border = "2px solid #FF0000";
  58. bledy += "Podaj swoje nazwisko.\n";
  59. }else
  60. {
  61. document.forms[0].nazwisko.style.border = "0px solid #FFFFFF";
  62. }
  63.  
  64. if (tel.value == "")
  65. {
  66. document.forms[0].tel.style.border = "2px solid #FF0000";
  67. bledy += "Podaj nr telefonu.\n";
  68. }else
  69. {
  70. document.forms[0].tel.style.border = "0px solid #FFFFFF";
  71. }
  72.  
  73. if ((email_validate(email.value) == false) || (email.value == ""))
  74. {
  75. document.forms[0].email.style.border = "2px solid #FF0000";
  76. bledy += "Podaj poprawny adres e-mail.\n";
  77. }else
  78. {
  79. document.forms[0].email.style.border = "0px solid #FFFFFF";
  80. }
  81.  
  82. if (gp.value == "")
  83. {
  84. document.forms[0].gp.style.border = "2px solid #FF0000";
  85. bledy += "Podaj orientacyjną godzinę przyjazdu.\n";
  86. }else
  87. {
  88. document.forms[0].gp.style.border = "0px solid #FFFFFF";
  89. }
  90.  
  91. if (gw.value == "")
  92. {
  93. document.forms[0].gw.style.border = "2px solid #FF0000";
  94. bledy += "Podaj orientacyjną godzinę wyjazdu.\n";
  95. }else
  96. {
  97. document.forms[0].gw.style.border = "0px solid #FFFFFF";
  98. }
  99.  
  100. if (captcha.value == "")
  101. {
  102. document.forms[0].captcha.style.border = "2px solid #FF0000";
  103. bledy += "Przepisz poprawnie kod z obrazka.\n";
  104. }else
  105. {
  106. document.forms[0].captcha.style.border = "0px solid #FFFFFF";
  107. }
  108.  
  109. if (bledy != "") error(bledy);
  110. }
  111. return !errfound;
  112. }


  1. echo '<form method="post" action="rezerwacje3.php" onsubmit="return validate2();">';
  2. echo '<table>';
  3. echo '<tr><td>Rezerwacja od</td><td><input type="text" name="od" size="15" onClick="showKal(this)"></td><td>Rezerwacja do</td><td><input type="text" name="doo" size="15" onClick="showKal(this)"></td><td>Liczba osób</td><td><select name="liczba">';
  4.  
  5. echo '<option value=""></option>';
  6. for($iii=1;$iii<41;$iii++)
  7. {
  8. echo '<option value="'.$iii.'">'.$iii.'</option>';
  9. }
  10.  
  11. echo '</select></td></tr>';
  12. echo '</table>';
  13. echo '<table>';
  14. echo '<tr><td>Imię</td><td><input type="text" name="imie" size="15" /></td><td>Nazwisko</td><td><input type="text" name="nazwisko" size="15" /></td></tr>';
  15. echo '<tr><td>E-mail</td><td><input type="text" name="email" size="15" /></td><td>Telefon</td><td><input type="text" name="tel" size="15" /></td></tr>';
  16. echo '<tr><td>Godzina przyjazdu</td><td><select name = "gp">';
  17. echo '<option value=""></option>';
  18. for($i=0;$i<24;$i++)
  19. {
  20. echo '<option value="'.$i.'">'.$i.'</option>';
  21. }
  22.  
  23. echo '</select></td><td>Godzina wyjazdu</td><td><select name = "gw">';
  24. echo '<option value=""></option>';
  25. for($ii=0;$ii<24;$ii++)
  26. {
  27. echo '<option value="'.$ii.'">'.$ii.'</option>';
  28. }
  29.  
  30. echo '</select></td></tr>';
  31. echo '<tr><td>Przepisz kod z obrazka</td><td><img src="captcha.php" /></td><td><input type="text" name="captcha" size="15" /></td><td><input type="hidden" name="rezerwacja" value="rezerwuj"><input type="submit" value="Sprawdź dostępność" style="cursor: pointer; margin-top:5px;"></td></tr>';
  32. echo '</table>';
  33. echo '</form>';


Który do dziś działał bez zarzutu, no właśnie do dziś... Teraz ogólnie też działa dobrze, ale w przypadku gdy wypełnię tylko pole "od" lub "doo" skrypt uznaje, że pozostałe pola także są wypełnione i przepuszcza wypełniającego dalej.
Dziwne i zapewne jest jakiś mały pycznik, którego ja siedząc i patrząc w ten kod już kolejną godzinę nie widzę. Będę bardzo wdzięczny jakby ktoś rzucił na to świeżym okiem i powiedział mi gdzie jest błąd. Z góry wielkie dzięki!
Sephirus
A jak jest z przeglądarkami? pod każda to teraz źle działa?
Cinema Paradiso
Tak, pod każdą tak samo (z błędem) sprawdziłem przed chwilą dla pewności na czterech przeglądarkach.
Sephirus
Powiem szczerze - to jest dziwne...

Mogę jedynie pomóc tak:

Masz FireBug'a? Daj w tej funkcji tak by niepatrzyła na walidację i zawsze wywalała return false (by się form nie wysyłał) i zrób debug przy każdy sprawdzaniu typu:

[JAVASCRIPT] pobierz, plaintext
  1. if (od.value == "")
  2. {
  3. document.forms[0].od.style.border = "2px solid #FF0000";
  4. bledy += "Podaj datę przyjazdu.\n";
  5. console.log('pole "od" - ERROR');
  6. }else
  7. {
  8. document.forms[0].od.style.border = "0px solid #FFFFFF";
  9. console.log('pole "od" - OK');
  10. }
[JAVASCRIPT] pobierz, plaintext


Dodatkowo możesz wyświetlać pole.value aby zobaczyć czy tam nie ma czegoś z palca... Dałbym też console.log w funkcji error i na końcu validation2 by sprawdzić wartości.

I jeszcze jedno - mógłbyś wrzucić kod HTML w formie HTML? po wyrzuceniu przez PHP? najlepiej wrzuć to na jsfiddle.net to pogrzebie w tym
Cinema Paradiso
FireBuga mam, ale szczerze mówiąc średnio potrafię z niego korzystać, z jsfiddle.net też za bardzo nie umiem skorzystać, gdyż nie mogę tam o dziwo wkleić kodu html, po prostu się nie wkleja, albo totalna lama ze mnie tongue.gif
W związku z tym wklejam poniżej czysty html i proszę o dalszą pomoc!
  1. <form method="post" action="rezerwacje3.php" onsubmit="return validate2();">
  2. <tr><td>Rezerwacja od</td><td><input type="text" name="od" size="15" onClick="showKal(this)"></td><td>Rezerwacja do</td><td><input type="text" name="doo" size="15" onClick="showKal(this)"></td><td>Liczba osób</td><td><select name="liczba">
  3. <option value=""></option>
  4. <option value="1">1</option>
  5. </select></td></tr>
  6. <tr><td>Imię</td><td><input type="text" name="imie" size="15" /></td><td>Nazwisko</td><td><input type="text" name="nazwisko" size="15" /></td></tr>
  7. <tr><td>E-mail</td><td><input type="text" name="email" size="15" /></td><td>Telefon</td><td><input type="text" name="tel" size="15" /></td></tr>
  8. <tr><td>Godzina przyjazdu</td><td><select name = "gp">
  9. <option value=""></option>
  10. <option value="1">1</option>
  11. </select></td><td>Godzina wyjazdu</td><td><select name = "gw">
  12. <option value=""></option>
  13. <option value="1">1</option>
  14. </select></td></tr>
  15. <tr><td>Przepisz kod z obrazka</td><td><img src="captcha.php" /></td><td><input type="text" name="captcha" size="15" /></td><td><input type="hidden" name="rezerwacja" value="rezerwuj"><input type="submit" value="Sprawdź dostępność" style="cursor: pointer; margin-top:5px;"></td></tr>
  16. </form>
Sephirus
Ok... ;P Daj mi 10 minut wink.gif

EDIT: ... hmmm kombinowałem na wszystkie sposoby... i twój kod ... działa dobrze pod każdą przeglądarką :/

Chyba nie wiem wszystkiego :/
Cinema Paradiso
Heh, no to rzeczywiście dziwne. Ale wielkie dzięki za info to bardzo cenna informacja. Tym razem dodałem do formularza rozwijane kalendarze onClick="showKal(this)" właśnie w tych polach "od" "doo" może to one powodują problem... Zaraz pokombinuję i dam znać czy to było to. Jeszcze raz dzięki!

Moje przypuszczenia się sprawdziły, wywaliłem te rozwijane kalendarze i jest ok. BTW może polecicie jakieś mniej konfliktowe gotowe kalendarze? smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.