Chciałem napisać skrypt w JavaScript do przyjaznych formularzy. Chodzi konkretniej o weryfikację wartości inputów i textarea, które mają jako id przypisane cyfry, które zarazem oznaczają ilość wykonania pętli for. W wypadku znalezienia nieprawidłowości ma ona zostać przerwana i uruchomiona pętla if z przerywaniem wykonywania formularza.
Kod
window.onload = sprawdzajFormularz;
function sprawdzajFormularz(nazPola)
{
document.for_prod.onsubmit = sprawdzPola(nazPola);
}
function sprawdzPola(nazPola)
{
var ilosc = nazPola;
var error = false;
for (var i = 1; i <= ilosc;i++ ) /*pętla sprawdzająca wartość pola
jeżeli jest puste, zatrzymuje wykonywanie formularza*/
{
alert(i);
var ktorePole = i;
var nazwa = document.getElementById(ktorePole).value;
var valid_3 = /^[\s]+$/.test(nazwa);
if(document.getElementById(ktorePole).value == "" || valid_3 === true)
{
document.getElementById(ktorePole).style.border = "2px solid #000000";
document.getElementById(ktorePole).value = "Musisz uzupełnić to pole!";
error = true;
alert(error);
break;
}
}
if (error){return false;}
}
function sprawdzajFormularz(nazPola)
{
document.for_prod.onsubmit = sprawdzPola(nazPola);
}
function sprawdzPola(nazPola)
{
var ilosc = nazPola;
var error = false;
for (var i = 1; i <= ilosc;i++ ) /*pętla sprawdzająca wartość pola
jeżeli jest puste, zatrzymuje wykonywanie formularza*/
{
alert(i);
var ktorePole = i;
var nazwa = document.getElementById(ktorePole).value;
var valid_3 = /^[\s]+$/.test(nazwa);
if(document.getElementById(ktorePole).value == "" || valid_3 === true)
{
document.getElementById(ktorePole).style.border = "2px solid #000000";
document.getElementById(ktorePole).value = "Musisz uzupełnić to pole!";
error = true;
alert(error);
break;
}
}
if (error){return false;}
}
<form method="post" action="#" name="for_prod" onSubmit="sprawdzajFormularz('8')">
I teraz mam problem, bo formularz mimo wszystko zostaje zatwierdzony i w wypadku jakiegoś pustego pola pętla for rzeczywiście zostaje przerwana (np. dla pustego pola o id 4 pokazują się alerty: 1, 2, 3, 4 i na końcu true [wartość error]). Mimo wszystko formularz jest odświeżany.
Próbowałem różne ustawienia z tą ostatnią pętla if (była w for, w if z pętli for, poza nią, na początku, na środku i na końcu), ale żadne nie było poprawne, to znaczy formularz analizowany był dalej i zatwierdzany mimo komunikatów o błędach w pustych inputach.
Jeżeli ktoś z Was domyśla się, co może powodować ten błąd, prosiłbym o wiadomość. Z góry dziękuję za pomoc.