Mam skrypt, który waliduje dane wprowadzane w formularzu.
W momencie klknięcia w button wykonywane jest przejście po określonych z góry polach w celu sprawdzenia poprawności wprowadzonych danych.
Jednym z pól jest pole "e-mail". Pobierana jest z niego wartość i wysyłana do pliku PHP przez ajax celem sprawdzenia dostępności e-mail.
Jeśli adres jest zajęty, to do znacznika <span id="info_nazwapolainput"></span> dodawany jest kolejny znacznik z klasą ".formInfo".
Na koniec wykonuje się sprawdzenie, czy istnieje na stronie znacznik o podanej wyżej klasie. Jeżeli nie występuje, to znaczy że formularz wypełniono poprawnie.
Cały problem w tym, że warunek wykonuje się przed otrzymaniem danych zwrotnych z ajax, tak jakby skrypt nie czekał wcale na nie tylko leciał drugim wątkiem dalej.
Kod wygląda w ten sposób:
Kod
checkPersonal(true); // walidowanie pól
// od razu wykonuje się to co niżej, zamiast checkPersonal skonczy dzialanie
// tj otrzyma dane zwrotne z pliku php przez ajaks i wyswietli na stronie znacznik z klasa .formInfo
var errors = errorExists2();
if (errors) {
goToFirstError();
} else {
// submit() // skutkiem tego wykonuje się zawsze ten tu submit nawet jesli w errors jest 0.
}
// od razu wykonuje się to co niżej, zamiast checkPersonal skonczy dzialanie
// tj otrzyma dane zwrotne z pliku php przez ajaks i wyswietli na stronie znacznik z klasa .formInfo
var errors = errorExists2();
if (errors) {
goToFirstError();
} else {
// submit() // skutkiem tego wykonuje się zawsze ten tu submit nawet jesli w errors jest 0.
}
Czemu tak się dzieje i co z tym zrobić? Prosze o podpowiedź.
PS Efekt taki, że za każdym razem tak jakby nie wykrywało błędów. Jak nałoże setTimeout() przed warunkiem to działa, ale nie cce w ten sposób..
PS2 Wystepowanie .formInfo sprawdzam przez .length