2009-04-13 8 views
5

die folgende Form:JavaScript OnBlur Ereignis verhindert, dass HTML-Formular eingereicht wird

<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> 

Wenn der Fokus auf dem Element mit dem Namen "x" und Benutzer drückt Submit-Button, onblur Ereignis ausgelöst wird, sondern Form nicht eingereicht. Gibt es eine Möglichkeit, den Send-Button wie erwartet funktionieren zu lassen, wenn ich Onblur-Events in meinem Formular habe?

Antwort

3

Erwägen Sie, Ihre onBlur()-Methode zu optimieren, damit sie weniger Zeit zum Ausführen benötigt. Wenn das Senden Ihres Formulars verhindert wird, liegt dies möglicherweise daran, dass onBlur() zu lang ist und den Browser daran hindert, etwas anderes zu tun.

Sie können auch die onChange() Methode anstelle von onBlur() verwenden. Das könnte für dich besser funktionieren.

+0

Vielen Dank für Ihre Antwort. Die Idee ist zu überprüfen, ob der Benutzername über AJAX-Aufruf existiert, also wäre es mit onChange() viel schwieriger, wenn möglich zu implementieren. Also, meinst du, ich kann onBlur() nicht benutzen? – Artem

+0

Sie sollten asynchrone AJAX-Anforderungen verwenden, die im Hintergrund ausgeführt werden und den Browser nicht aufhängen. Mit diesen wird der onSubmit auch dann funktionieren, wenn die Ajax-Anfrage nicht beendet ist. Die Jquery-Bibliothek führt standardmäßig eine Asynchronisierung durch, siehe http://docs.jquery.com/Ajax/jQuery.ajax. –

0

Versuchen Zugabe

return true; 

nach Ihrer onBlur Funktion aufrufen. Das Problem, mit dem Sie konfrontiert sind, liegt möglicherweise an der "falschen Rückkehr" der Ereignishandler.

+0

Nein. Die erste Antwort war korrekt. Ich habe es versucht und es hat nicht geholfen. – Artem

+0

OK. Es war nur eine Möglichkeit obwohl;) – BYK