Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysłanie formularza po drugim kliknięciu - firefox
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
d4ng
cześć mam prosty formularz logowania (2 inputy login hasło + button typu submit) z walidacją w js. Problem w tym że tylko na firefoxie formularz wyśle sie po drugim kliknięciu w button albo gdy dany input straci focus (np klikne obok formularza) a nastepnie klikne w button (wtedy za pierwszym). Czy ktoś ma jakiś pomysł co to może być? Niby js jest dobry (niestety nie mam do niego dostępu żeby go pokazać).
Comandeer
No to jak nie masz dostępu do kodu, to tak średnio jest jak pomóc… Na razie to jedynie SOA#1 – u mnie działa.
d4ng
no niestety problem jest na środowisku stg (przedprodukcyjne) do którego nie mam wiazdu i wrzucili mi taska żebym wróżył z fusów... ja się z czymś taki nie spotkałem i moge się załoyć że zrobili babola w js no ale...

to co sugerujesz odbić SOA#Z ? smile.gif
Comandeer
Na pewno jest babol w JS. Strzelam, że walidacja odpala się wyłącznie przy blur pola, stąd czasami trzeba dwa razy kliknąć (pierwszy klik zbluruje pole a drugi – wyśle formularz).
Pyton_000
Gdyby tak było to kliknięcie obok formularza skutkowałoby dokładnie takim samym zachowaniem (2x kliknięcie).

Zobacz sobie jakie eventy są przypięte do buttona (by Developers Tools).

JS przecież możesz sobie ze źródła pobrać więc nie widzę problemu wink.gif
Comandeer
Cytat
Gdyby tak było to kliknięcie obok formularza skutkowałoby dokładnie takim samym zachowaniem (2x kliknięcie).

Nie. Klik na przycisku wysyła formularz, ale tylko wtedy, gdy wszystkie pola są sprawdzone i zwalidowane. A walidacja pola zachodzi dopiero przy blur.

Chociaż blur powinien się wywołać przed click, hmmm… Dałoby się to odtworzyć przy użyciu [tt]mousedown[/tt]: https://jsfiddle.net/m817fhfv/1/
JoShiMa
Nie chciałabym wyciągać trupa z szafy, ale mnie to zastanowiło (szukam informacji i wpadłam na ten wątek). Czym właściwie różni się event blur od focusout.
SmokAnalog
Różnica jest taka, że blur jest wywoływane tylko wtedy, gdy ten określony element traci focus. focusout za to obsługuje event bubbling, czyli jak masz na przykład <input> wewnątrz <form> i dasz focusout na <form>, to zostanie wywołane przy odznaczeniu pola tekstowego.
Comandeer
Niemniej można chwycić blur w fazie przechwytywania → https://jsfiddle.net/Comandeer/tefx83ar/
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-2024 Invision Power Services, Inc.