Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Problem z for i return false
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Koniczynka
Witajcie,

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;}
                        
                        
                            }



  1. <form method="post" action="#" name="for_prod" onSubmit="sprawdzajFormularz('8')">
  2. <div class="pol_d"><span class="tek_d">Nazwa</span><span class="polk_d"><input type="text" name="nazz" class="inp_d" id="1" /></span></div>


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.
zbig
Witam ! Wywal z kodu window.onload = sprawdzajFormularz i funkcje sprawdzajFormularz
Przy onSubmit napisz onSubmit="return sprawdzPola(nazPola)"

Pozdrawiam
gekon
1. Id nie może zaczynać się od cyfry: http://www.w3.org/TR/html401/types.html#type-name
2.
  1. window.onload = function(){
  2. myForm = document.getElementById('my-form');
  3.  
  4. myForm.onsubmit = function(){
  5. var i = this.getElementsByTagName('input').length;
  6. i += this.getElementsByTagName('textarea').length;
  7. sprawdzPola(i);
  8. }
  9. }
Koniczynka
Dziękuję Wam serdecznie za uwagi i propozycje. Działa teraz jak należy.
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.