i funkcje w js do sprawdzania czy pole zostało wypełnione:
function checkForm(){
var found = true;
if( document.forms[0].question[0].value == "") //co mam tutaj wpisać zamiast question[0]
found = false;
if(found == true){
document.getElementById("form").submit();
}
else
alert("Wypełnij poprawnie wszystkie pola");
}
i teraz jak zrobić aby sprawdzić czy wszystkie pola z name=“question[]” zostały wypełnione, bo to z question[0] nie działa nawet gdy wpisze tylko jedno pole.
Takie coś Ci nie zadziała, ponieważ JS nie zinterpretuje Ci nazwy “question[]” jako tablicy - to będzie ciągle tylko zwykła nazwa, ale przez te nawiasy [] nie będzie można się do tego pola odwołać tak jak to napisałeś, tylko przez document.forms[0].item(“question[]”).
Taki “tablicowy” zapis nazwy pola chyba interpretuje PHP (ale to po stronie serwera) i wtedy to ma sens.
rozumiem ze miałem zamienić na to: document.forms[0].item(“question[]”) ale to nie działa. Więc jaki jest sposób aby zrobić walidację pola takiego typu za pomocą js?
Tak może i lepiej, zgadzam się, tylko to mi wykasuje wszystkie do tej pory wprowadzone dane bo strona zostanie przecież przeładowana a mój formularz jest dość długi
Rzeczywiście item nie działa - pisałem “z pamięci” - przepraszam.
Zadziała document.forms[0].elements[“question[]”], można też iterować elementy liczbami (od 0), np. document.forms[0].elements[0]
Walidację w PHP warto robić, a zachowanie wprowadzonych danych da się zrobić po prostu tak, że zamiast wyświetlać pusty formularz, wyświetlasz go z jakby otrzymanymi danych (metodą POST lub GET) i gotowe.
Czyli przykładowo (znów z pamięci piszę):
ewentualnie poprawić z użyciem isset():
P.S. Walidacja po stronie klienta czasami jest wygodna i prostsza (dla użytkownika).
Było by dobrze w ten sposób: document.forms[0].elements[“question[]”] jednak u mnie to trochę bardziej skomplikowana sprawa ponieważ pola formularza mam generowane dynamicznie czyli też przez js a to document.forms[0].elements[“question[]”] poprawnie mi sprawdza tylko pierwsze pole natomiast pozostałych utworzonych dynamicznie ale z tym samym name=“question[]” już nie bierze pod uwagę ;/ Pytanie: jak zrobić aby brało wszystkie pola z name=“question[]” pod uwagę nawet te utworzone dynamicznie?
Ostatnie pytanie to jak przesłać pola id=“question[]” za pomocą jquery i funkcji ajax? Bo pojedyncze pole to bez problemu z wykorzystaniem id=“question”