2009-04-13 13 views
5

Rozważmy następującą postać:zdarzenie JavaScript onblur zapobiega formularza HTML z poddaniem

<form action="/a" method="post"> 
    <input name="x" type="text" onblur="myonblur(e)" /> 
    <input name="y" type="text" /> 
    <input name="submit" type="submit" value="Submit" /> 
</form> 

Kiedy skupiamy się na elemencie o nazwie „X” i pras użytkowników złożyć przycisku onblur Zdarzenie ale forma nie jest składany. Czy jest jakiś sposób, aby przycisk przesyłania działał zgodnie z oczekiwaniami, jeśli mam zdarzenia onblur w moim formularzu?

Odpowiedz

3

Rozważ optymalizację metody onBlur(), aby zabrać mniej czasu. Jeśli formularz nie może zostać przesłany, może to oznaczać, że kod onBlur() jest zbyt długi i powoduje, że przeglądarka nie robi nic innego.

Można również użyć metody onChange() zamiast onBlur(). To może ci się lepiej przydać.

+0

Dziękuję za odpowiedź. Pomysł polega na sprawdzeniu, czy nazwa użytkownika istnieje poprzez wywołanie AJAX, więc przy pomocy onChange() byłoby to znacznie trudniejsze do wdrożenia, jeśli to możliwe. Masz na myśli, nie ma sposobu, aby użyć wBlur()? – Artem

+0

Należy używać asynchronicznych żądań AJAX, które działają w tle i nie zawieszają przeglądarki. Korzystając z tych, funkcja onSubmit będzie nadal działać, nawet jeśli żądanie ajax nie zostanie zakończone. Biblioteka Jquery domyślnie asynchronizuje, spójrz na http://docs.jquery.com/Ajax/jQuery.ajax –

0

spróbuj dodać

return true; 

po wywołaniu czynność onblur. Problem, z którym masz do czynienia, może wynikać z "zwrócenia fałszywych" funkcji obsługi zdarzeń.

+0

Nie. Pierwsza odpowiedź była prawidłowa. Próbowałem twojego podejścia i to nie pomogło. – Artem

+0

OK. To była tylko możliwość;) – BYK

Powiązane problemy