Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
Witam. Mam sobie formualrz rejestracyjnym, a w nim dwa pola do weryfikacji czy nazwa jest dostępna (załóżmy, że pola to nazwa1 i nazwa2). Przy onsubmit mam ustawioną funkcję validator();. Funkcja ta odpala request przez advAjax i zwraca napis w divie "nazwa jest wolna" lub "nazwa jest zajęta" lub "wystąpił błąd". Tutaj wszystko fajnie, ALE nie moge sobie poradzić ze zwróceniem return false jeśli nazwa jest zajęta / wsytąpi błąd. Próbowałem na pare sposobów przekazać return false i nie daje rady... Pomożecie?
Validator wywołuje makeRequest dla pola nazwa1 i nazwa2
Tutaj akurat zastowałem advAjax, ale próbowałem także mootools i podobnie nie potrafie zwrócić lub true... Ten post edytował zaksmok 8.08.2008, 09:38:03 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%)
|
Przecież sekcja onSuccess jest pusta więc co robisz przy pomocy Ajaxa?
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%)
|
Nieraz rozwiązania najprostsze są wystarczające. Ustawiaj w return.php jakiś tekst w przypadku gdy rekordy wystąpią w bazie (np. false) lub zwracaj pustą odpowiedź. Teraz w JS w przypadku pustego obj.responseText lub zawierającego to ustalone słowo (np. false) wyświetlaj komunikat o tym że nazwa jest zajęta.
Do obsługi błędów użyj sekcji onError |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
no tak, ale wyświetlenie komunikatu nie zablokuje mi akcji submit przecież.
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%)
|
No to zrób przycisk do wysylania jako button i jak będzie wszystko w porządku to w JS zrób form.submit()
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
hehe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a jak ktoś będzie miał wyłączony js to nie będzie mógł wysłać formularza wcale? Problem chyba już rozwiązałem. w metodzie onSuccess: dorzucam {document.myVariable = true;} a następnie po wywołaniu makeRequest odczytuje wartość myVariable i w funkcji Validator robie return dla formularza. Być może znacie jakieś lepsze rozwiązanie? Wydaje mi się, że można jeszcze ewentualnie wyłować form.onsubmit = false w momencie błędu, ale wtedy zablokuje się dalszą weryfikacje formularza. Czekam na jakieś propozycje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Jednak nie... Wartość zapisuje się dopiero po wykonaniu onsubmit... Czekam dalej na help (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował zaksmok 8.08.2008, 11:05:47 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%)
|
Jak ktoś będzie miał wyłączony js to twoje skrypty walidujące też nie zadziałają(IMG:http://forum.php.pl/style_emoticons/default/smile.gif) hehe
Możesz skorzystać z onsubmit w formie, a przycik typu submit |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
no nie zadziałają skrypty walidujące, ale formularz będzie działać. A jak wstawie button to nie wyśle bez JS. Chyba, że dopisze input type="submit" w <noscript></noscript> bo niepotrzebnie komplikuje kod.
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%)
|
Zrób może tak
- funkcja którą wywołujesz w onsubmit standardowo zwraca false - w onSuccess jeśli warunki są poprawne wyślij formularz |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
też o tym myślałem, ale zauważ, że mam dwa takie pola i return true mogę zwrócić tylko wtedy, kiedy oba pola będą poprawne... Dlatego próbuje wynik requesta zapisać do zmiennej / tablicy w funkcji validator, na końcu zweryfikować dane i wykonać return odpowiedni... Dodatkowo fomularz ma kilka pól, które są weryfikowane, aby nie były puste, więc nie mogę tak zrobić jak napisałeś.
|
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%)
|
A w czym problem?
Ta funkcja wywoływana w onsubmit powinna zawierać normalną walidację pozostałych pól. Jeśli zakończy sie ona sukcesem wywołujesz dopiero Ajaxa W pliku php do którego odwołuje się Ajaxa sprawdzaj od razu oba warunki na te 2 pola Ten post edytował Ar2r 8.08.2008, 11:25:27 |
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%)
|
no i traci sie tutaj uniwersalizm funkcji... W innym formie bede chcial sprawdzic tylko jedno pole i bede musial extra pisac php, js i htmla do obslugi...
|
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 21:14 |