zawsze do walidacji formularzy stosowałem następujący skrypt js:
function error(tekst) { if (errfound) return; window.alert(tekst); errfound = true; } function email_validate(src) { var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/; return regex.test(src); } function validate2() { errfound = false; var bledy = ""; with (document.forms[0]) { if (od.value == "") { document.forms[0].od.style.border = "2px solid #FF0000"; bledy += "Podaj datę przyjazdu.\n"; }else { document.forms[0].od.style.border = "0px solid #FFFFFF"; } if (doo.value == "") { document.forms[0].doo.style.border = "2px solid #FF0000"; bledy += "Podaj datę wyjazdu.\n"; }else { document.forms[0].doo.style.border = "0px solid #FFFFFF"; } if (liczba.value == "") { document.forms[0].liczba.style.border = "2px solid #FF0000"; bledy += "Podaj liczbę osób.\n"; }else { document.forms[0].liczba.style.border = "0px solid #FFFFFF"; } if (imie.value == "") { document.forms[0].imie.style.border = "2px solid #FF0000"; bledy += "Podaj swoje imię.\n"; }else { document.forms[0].imie.style.border = "0px solid #FFFFFF"; } if (nazwisko.value == "") { document.forms[0].nazwisko.style.border = "2px solid #FF0000"; bledy += "Podaj swoje nazwisko.\n"; }else { document.forms[0].nazwisko.style.border = "0px solid #FFFFFF"; } if (tel.value == "") { document.forms[0].tel.style.border = "2px solid #FF0000"; bledy += "Podaj nr telefonu.\n"; }else { document.forms[0].tel.style.border = "0px solid #FFFFFF"; } if ((email_validate(email.value) == false) || (email.value == "")) { document.forms[0].email.style.border = "2px solid #FF0000"; bledy += "Podaj poprawny adres e-mail.\n"; }else { document.forms[0].email.style.border = "0px solid #FFFFFF"; } if (gp.value == "") { document.forms[0].gp.style.border = "2px solid #FF0000"; bledy += "Podaj orientacyjną godzinę przyjazdu.\n"; }else { document.forms[0].gp.style.border = "0px solid #FFFFFF"; } if (gw.value == "") { document.forms[0].gw.style.border = "2px solid #FF0000"; bledy += "Podaj orientacyjną godzinę wyjazdu.\n"; }else { document.forms[0].gw.style.border = "0px solid #FFFFFF"; } if (captcha.value == "") { document.forms[0].captcha.style.border = "2px solid #FF0000"; bledy += "Przepisz poprawnie kod z obrazka.\n"; }else { document.forms[0].captcha.style.border = "0px solid #FFFFFF"; } if (bledy != "") error(bledy); } return !errfound; }
echo '<form method="post" action="rezerwacje3.php" onsubmit="return validate2();">'; echo '<table>'; for($iii=1;$iii<41;$iii++) { echo '<option value="'.$iii.'">'.$iii.'</option>'; } echo '</table>'; echo '<table>'; for($i=0;$i<24;$i++) { echo '<option value="'.$i.'">'.$i.'</option>'; } for($ii=0;$ii<24;$ii++) { echo '<option value="'.$ii.'">'.$ii.'</option>'; } echo '</table>'; 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!