Rufen Sie eine Funktion auf, nachdem Formular zurücksetzen
Ist es eine Methode für mich, um eine Funktion aufrufen nach Klick auf den reset-Knopf in form, und ich meine nach, so dass das Formular zuerst zurückgesetzt und dann meine Funktion aufgerufen. Normal-Ereignis-bubbling würde meine Funktion, und nur setzen Sie dann die form. Nun möchte ich vermeiden, setTimeout, um dies zu tun.
Was ich brauche, ist eine Funktion aufzurufen, wenn ein Formular zurückgesetzt wird, weil ich die Verwendung einheitlicher und einheitlich aktualisiert werden muss, wenn sich Werte ändern.
Im moment mache ich es so:
//Reset inputs in a form when reset button is hit
$("button[type='reset']").live('click', function(){
elem = this;
//Sadly we need to use setTimeout to execute this after the reset has taken place
setTimeout(function(){
$.each($(elem).parents('form').find(":input"), function(){
$.uniform.update($(this));
});
}, 50);
});
Habe ich versucht zu tun, al diese auf $(':input').change()
aber zurücksetzen ein element scheint nicht zum auslösen des change-Ereignisses.
Vielen Dank im Voraus für jede Hilfe.
- Warum nicht mit Ihrem eigenen
reset()
Methode? - Warum vermeiden setTimeout? Diese Antwort deutet darauf hin, dass der beste Weg ist: stackoverflow.com/a/21641295/421243
Du musst angemeldet sein, um einen Kommentar abzugeben.
HTML-Formularen zu tun haben onReset-Ereignis, können Sie Ihre call-innen:
Wie schon in den Kommentar von Frédéric Hamidi Sie können auch
bind
etwa so:Nach einigen Tests scheint es in beide Richtungen ausgelöst werden, bevor der reset erfolgt und nicht nach. Die Art, wie Ihr es tun, jetzt scheint der beste Weg zu sein.
Dem gleichen Ergebnis wurde gefunden, in dieser Frage hier
reset
noch läuft der hf vor, die Felder sind eigentlich reset (fiddle hier). Dieses Verhalten ist wahrscheinlich erforderlich, um zu unterstützenpreventDefault()
auf diereset
Veranstaltung.reset
. Scheint nicht so oder so ausgelöst, nachdem das zurücksetzen abgeschlossen ist und Zweifel gibt es keine wirkliche effiziente Art und Weise zu tun, ist es neben der Verwendung eines timeout, wie er jetzt tut.Ich noch nicht getestet, in allen Browsern, aber Sie können Ihre eigene Bestellung innerhalb von ein click-Ereignis:
http://jsfiddle.net/vol7ron/9KCNL/1/
Zeit arbeitete ich Debuggen einer Google IE-Verwandte plugin, und ich löste die wichtigsten Fehler, die mit einer blubbernden trick. Das ist, warum ich denke, dass dann sofort die Lösung für Ihr problem (natürlich sollte cross-browser):
Auf diese Weise können Sie erfassen die sprudelnden mit $('#capture_bubble') nach reset-Ereignis ausgelöst werden.
Können Sie eine schnelle Prüfung mit:
Bitte beachten Sie: diese.form.reset(); (änderung aufgrund einer jeff-wilbert Beobachtung)
sollten Sie nicht brauchen, zu warten 50 Millisekunden. Wenn Sie setTimeout mit einem timeout von null, dies effektiv bedeutet, "drücken Sie diesen code auf das Ereignis-Stapel". Da die form-reset wird garantiert gefeuert haben zuerst, den code in die setTimeout gewährleistet ist (in gut benommen javascript-Interpreter) zu haben, Zugriff auf das Formular Werte, die Sie möchten (post-reset). Sie sollten in der Lage sein verwenden Sie den folgenden code, Schuld-frei.
0
ms Verzögerung!