“action” und “onsubmit” eines Formulars: Was wird zuerst ausgeführt?

Lesezeit: 4 Minuten

Benutzer-Avatar
Nicht John Skeet

Ich versuche, eine Webseite zu debuggen, und ich sehe ein Formularelement, dessen Öffnung ist

<form name="aspnetForm" method="post" action="default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm">

Nur über Grundkenntnisse im Web verfügen forms, ich frage mich, was die Reihenfolge der Hinrichtung für die ist action und onsubmit.

  • javascript: ist im onsubmit nutzlos

    – escarello

    12. März 2015 um 16:05 Uhr

Wenn action wurde zuerst aufgelöst, dann würde der Browser die Seite verlassen, die JS-Ausführungsumgebung würde verschwinden und es gäbe keinen Ort, an dem das JS ausgeführt werden könnte onsubmitalso nicht.

Ereignishandler werden vor Standardaktionen ausgeführt. Sie können Standardaktionen abbrechen.

Das onsubmit muss zuerst ausführen, da die Rückgabe von false das Absenden des Formulars und damit die stoppt action jemals nachgefragt.

Dies wird in der HTML5-Spezifikation erklärt:

4.10.22.3 Formularübermittlungsalgorithmus

Wenn ein form Element bilden ist eingereicht aus einem Element
Einreicher (normalerweise eine Schaltfläche), optional mit a eingereicht von submit() Methode Wenn das Flag gesetzt ist, muss der Benutzeragent die folgenden Schritte ausführen:

  1. Lassen Formulardokument sei der bilden‘s Document.

  2. Wenn Formulardokument hat keine zugeordnet Browsing-Kontext oder seine aktives Sandboxing-Flag gesetzt hat seine Kontext-Flag zum Durchsuchen von Sandbox-Formularen gesetzt, und brechen Sie diese Schritte ab, ohne etwas zu tun.

  3. Lassen Browsing-Kontext bilden sei der Browsing-Kontext von Formulardokument.

  4. Wenn die eingereicht von submit() Methode Flag ist nicht gesetzt, und die Einreicher Element kein Validierungsstatus ist dann falsch
    validieren Sie die Einschränkungen interaktiv von bilden und prüfen Sie das Ergebnis: Wenn das Ergebnis negativ ist (die Einschränkungsvalidierung hat festgestellt, dass ungültige Felder vorhanden sind, und den Benutzer wahrscheinlich darüber informiert), dann ein einfaches Ereignis auslösen genannt invalid Bei der bilden Element und brechen Sie dann diese Schritte ab.

  5. Wenn die eingereicht von submit() Methode Flag ist dann nicht gesetzt ein einfaches Ereignis auslösen das sprudelt und ist kündbar benannt
    submitbei bilden. Wenn die Standardaktion des Ereignisses verhindert wird (dh wenn das Ereignis abgebrochen wird), brechen Sie diese Schritte ab. Fahren Sie andernfalls fort (tatsächlich ist die Standardaktion, die Übermittlung durchzuführen).

  6. Lassen Datensatz bilden das Ergebnis sein von Erstellen des Formulardatensatzes zum bilden im Zusammenhang mit Einreicher.

  7. Lassen Aktion sei der Einreicher Element Aktion.

  8. Wenn Aktion ist die leere Zeichenfolge, let Aktion sein die Adresse des Dokuments des Formulardokument.

  9. Beschließen die URL Aktionim Verhältnis zu Einreicher Element. Wenn dies fehlschlägt, brechen Sie diese Schritte ab.

  10. Lassen Aktion das Ergebnis sein absolute URL.

  11. Lassen Aktionskomponenten das Ergebnis sein geparste URL.

  12. Lassen planen sei der planen des Resultats geparste URL.

  13. Lassen enctyp sei der Einreicher Element enctyp.

  14. Lassen Methode sei der Einreicher Element Methode.

  15. Lassen Ziel sei der Einreicher Element Ziel.

  16. Wenn der Benutzer eine bestimmte angegeben hat Browsing-Kontext beim Absenden des Formulars verwenden, dann lassen Ziel-Browsing-Kontext sei es
    Browsing-Kontext. Ansonsten bewerben die Regeln für die Auswahl eines Browsing-Kontexts bei gegebenem Browsing-Kontextnamen verwenden Ziel wie der Name und Browsing-Kontext bilden als Kontext, in dem der Algorithmus ausgeführt wird, und let Ziel-Browsing-Kontext das Ergebnis sein Browsing-Kontext.

  17. Wenn Ziel-Browsing-Kontext im vorherigen Schritt erstellt wurde, oder alternativ, wenn die Formulardokument hat noch nicht komplett geladen und die eingereicht von submit() Methode Flag ist gesetzt, dann let ersetzen wahr sein. Ansonsten lass es falsch sein.

  18. Wählen Sie andernfalls die entsprechende Zeile in der folgenden Tabelle basierend auf dem Wert von aus planen wie durch die erste Zelle jeder Zeile angegeben. Wählen Sie dann die entsprechende Zelle in dieser Zeile basierend auf dem Wert von aus Methode
    wie in der ersten Zelle jeder Spalte angegeben. Springen Sie dann zu den Schritten, die in dieser Zelle benannt und unterhalb der Tabelle definiert sind.

               |        GET        |         POST
    -------------------------------------------------------
    http       | Mutate action URL | Submit as entity body
    https      | Mutate action URL | Submit as entity body
    ftp        | Get action URL    | Get action URL
    javascript | Get action URL    | Get action URL
    data       | Get action URL    | Post to data:
    mailto     | Mail with headers | Mail as body
    

    Wenn planen nicht zu den in dieser Tabelle aufgeführten gehört, dann ist das Verhalten nicht durch diese Spezifikation definiert. Benutzeragenten sollten in Ermangelung einer anderen Spezifikation, die dies definiert, analog zu der in dieser Spezifikation für ähnliche Schemata definierten Weise handeln.

Daher wird in Schritt 5 die submit wird ausgelöst und kann abgebrochen werden, um das Absenden des Formulars zu verhindern. Danach wird die Aktion ausgeführt.

onsubmit wird zuerst ausgeführt, um das Format etc. zu prüfen. Dann action wird ausgeführt, um die Daten an das Backend zu erhalten/zu senden.

1017170cookie-check“action” und “onsubmit” eines Formulars: Was wird zuerst ausgeführt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy