Ich habe ein Formular, bei dessen Übermittlung ich eine zusätzliche Verarbeitung durchführen muss, bevor das Formular gesendet werden soll. Ich kann das Standardverhalten beim Senden von Formularen verhindern und dann meine zusätzliche Verarbeitung durchführen (es ruft im Grunde die Google Maps-API auf und fügt dem Formular einige versteckte Felder hinzu) - und dann muss das Formular gesendet werden.
Gibt es eine Möglichkeit, "Standard zu verhindern" und irgendwann "Standard fortsetzen"?
javascript
jquery
StackOverflowNewbie
quelle
quelle
Antworten:
Verwenden
jQuery.one()
Die Verwendung von
one
verhindern auch Endlosschleife, da dieses benutzerdefiniertesubmit
Ereignis nach dem ersten Senden ausgelöst wird.quelle
Wenn Sie das
.submit()
Ereignis an das Formular binden und die gewünschten Aktionen ausführen, bevor Sie zurückkehren (true), geschieht dies vor der eigentlichen Übermittlung.Beispielsweise:
Einfaches Beispiel
Ein weiteres Beispiel auf jquery.com: http://api.jquery.com/submit/#entry-examples
quelle
Ich würde einfach tun:
Rufen Sie
preventDefault
zuerst an und verwenden Sie diesubmit()
Funktion später, wenn Sie nur das Formular senden müssenquelle
Auf diese Weise erstellen Sie eine Endlosschleife für Ihr JS. Um dies besser zu machen, können Sie Folgendes verwenden
Ich hoffe, es hilft! Vielen Dank!
quelle
Dies ist meiner Meinung nach die allgemeinste und robusteste Lösung (wenn Ihre Aktionen vom Benutzer ausgelöst werden, z. B. "Benutzer klickt auf eine Schaltfläche"):
Beachten Sie als Beispiel diese elegante Lösung zum Hinzufügen von "Sind Sie sicher?" Popup zu einer beliebigen Schaltfläche, indem Sie eine Schaltfläche mit einem Attribut dekorieren. Wir setzen das Standardverhalten unter bestimmten Bedingungen fort, wenn der Benutzer sich nicht abmeldet.
1. Fügen wir zu jeder Schaltfläche, die wir möchten, ein Warnhinweis "Sind Sie sicher" hinzu:
2. Befestigen Sie Handler an ALLEN solchen Schaltflächen:
Das ist es.
quelle
quelle
Mit
jQuery
und einer kleinen Variation von @ Joepreludians Antwort oben:Wichtige Punkte, die Sie beachten sollten:
.one(...)
anstatt.on(...) or .submit(...)
named
Funktion stattanonymous function
da wir es innerhalb der verweisen werdencallback
.Sie können den Wert der
allIsWell
Variablen im folgenden Snippet änderntrue
oderfalse
die Funktionalität testen:Viel Glück...
quelle
Auf reine Javascript-Weise können Sie das Formular senden, nachdem Sie die Standardeinstellung verhindert haben.
Dies liegt daran ,
HTMLFormElement.submit()
nie ruft dieonSubmit()
. Wir verlassen uns also auf diese Seltsamkeit der Spezifikation, um das Formular so einzureichen, als ob es hier keinen benutzerdefinierten Onsubmit-Handler hätte.Siehe diese Geige für eine synchrone Anfrage.
Das Warten auf den Abschluss einer asynchronen Anforderung ist genauso einfach:
Sie können meine Geige nach einem Beispiel für eine asynchrone Anforderung durchsuchen.
Und wenn Sie mit Versprechungen unten sind:
Und hier ist diese Bitte .
quelle
Sie können verwenden
e.preventDefault()
, um den aktuellen Vorgang zu stoppen.als du tun kannst
$("#form").submit();
quelle
"Validierungsinjektion ohne Submit-Schleife":
Ich möchte nur reCaptcha und einige andere Dinge vor der HTML5-Validierung überprüfen, also habe ich so etwas gemacht (die Validierungsfunktion gibt true oder false zurück):
quelle