Sollte jQuerys $ (form) .submit (); nicht onSubmit innerhalb des Formular-Tags auslösen?
Habe ich Folgendes:
<script type="text/javascript">
function CancelFormButton(button) {
$(button.form).submit();
}
</script>
<form onsubmit="alert('here');">
<input type="button" value="Cancel" onClick="CancelFormButton(this);" />
</form>
Wenn ich auf die Schaltfläche "Abbrechen", das "onsubmit" aus dem form-tag wird nicht ausgelöst.
Diese Zeile stattdessen sendet das Formular erfolgreich: $(button.form).submit();
aber überspringt die alert('here');
innerhalb der onsubmit im form-tag.
Ist das richtig oder mache ich etwas falsch?
Durch die Art und Weise, in diesem Fall möchte ich diese Funktionalität, aber ich Frage mich nur, ob ich mich in ein problem in einem browser, wo die onsubmit ausgelöst.
InformationsquelleAutor der Frage Darryl Hein | 2009-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sorry, falsch verstanden deine Frage.
Laut Javascript - Erfassung onsubmit beim aufrufen der form.submit():
(Hervorhebung Hinzugefügt).
Hinweis: "von einem Benutzer aktiviert" beinhaltet auch das schlagen submit-buttons (und wahrscheinlich auch Standard-submit-Verhalten der enter-Taste, aber ich habe nicht versucht dies). Noch, glaube ich, wird es ausgelöst, wenn Sie (mit code) klicken Sie auf die Schaltfläche "senden".
InformationsquelleAutor der Antwort cletus
Diesem arbeiten, um das Problem zu beheben, gefunden von @Cletus.
Funktioniert auf allen modernen Browsern.
Wird die Arbeit über tabs/gespawnt child-windows (ja, auch im IE<9).
Und die ist in Vanille!
Gebe es eine DOM-Referenz auf ein Formular-element und stellen Sie sicher, dass alle angeschlossenen Hörer, die die "onsubmit", und (wenn nicht verhindert) schließlich, das Formular abschicken.
InformationsquelleAutor der Antwort Hashbrown
Ich nehme an, es ist vernünftig, zu wollen, dass dieses Verhalten in einigen Fällen, aber ich würde behaupten, dass der code nicht auslösen einer form der Einreichung sollte (immer) die default-Verhalten. Angenommen, Sie fangen wollen, ein Formular gesendet mit
tun, und dann einige, die Validierung auf den Eingang. Wenn der code könnte trigger submit-Handler, man konnte nie gehören
in diesem handler, da würde das Ergebnis in eine Endlosschleife (der GLEICHE handler aufgerufen werden würde, zu verhindern, dass die Unterwerfung, überprüfen und übermitteln). Sie müssen in der Lage sein, um manuell senden ein Formular innerhalb eines submit-handler ohne Auslösung der gleichen handler.
Ich weiß, das beantwortet nicht die Frage direkt, aber es gibt viele andere Antworten auf dieser Seite darüber, wie diese Funktionalität kann gehackt werden, und ich fühlte, dass diese benötigt werden, hingewiesen (und es ist zu lang für einen Kommentar).
InformationsquelleAutor der Antwort tandrewnichols
Meine einfache Lösung:
Ist es Arbeit für mich.
InformationsquelleAutor der Antwort rukeba
Versuchen, um die trigger () - Ereignis in Ihrer Funktion:
InformationsquelleAutor der Antwort Sergei
trigger('submit') funktioniert nicht.beacuse onSubmit-Methode wird nicht gefeuert.
der folgende code funktioniert für mich, Aufruf onSubmit-Methode, bei der mithilfe dieses Codes :
$("form").find(':submit').click();
InformationsquelleAutor der Antwort f.jafari
Fand ich diese Frage serval Jahren.
vor kurzem habe ich versucht, zu "umschreiben" der submit-Methode. unten ist mein code
}
Hab es im IE,aber nicht in anderen Browsern aus dem gleichen Grund wie "cletus"
InformationsquelleAutor der Antwort
Ist die einfachste Lösung zur Umgehung dieses ist zum erstellen von 'vorübergehenden' input mit type submit und trigger klicken Sie auf:
InformationsquelleAutor der Antwort Kai
Statt
$("form").submit()
versuchen, diese
InformationsquelleAutor der Antwort ashkufaraz