2015-03-12 4 views
6

Ich versuche, eine Webseite zu debuggen, und ich sehe ein Element bilden, deren ÖffnungDie "action" und "onsubmit" eines Formulars: Welches wird zuerst ausgeführt?

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

nur ein Basiswissen von Web form s, ich frage mich, was die Reihenfolge der Ausführung für die action ist und onsubmit.

+2

'javascript:' ist nutzlos im onsubmit – epascarello

Antwort

10

Wenn action zuerst aufgelöst wurde, dann würde der Browser die Seite verlassen, die JS-Ausführungsumgebung würde verschwinden und es gäbe keinen Nirgendwo, in onsubmit das JS auszuführen, so ist es nicht.

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

5

Die onsubmitmuss ausführen zuerst, wie Rückkehr falsch von ihm die Form hält vorgelegt werden, und damit die action immer angefordert wird.

7

Dies wird in der HTML5 spec erläutert:

4.10.22.3 Form submission algorithm

Wenn ein form Element Form von einem Element submitter (typischerweise ein Knopf), mit einem wahlweise vorgelegt ist, gesendet von submit() Methode Flag gesetzt, muss der Benutzer-Agent die follo ausführen Flügel Schritte:

  1. Lassen Form Dokument die Form ‚s seinDocument.

  2. Wenn Form Dokument keine zugehörigen browsing context hat oder seine active sandboxing flag set hat seine sandboxed forms browsing context flag Satz, abbrechen dann diese Schritte, ohne etwas zu tun.

  3. Lassen Form Browsing Kontext der browsing context von Form Dokument sein.

  4. Wenn die von submit() Methode vorgelegt Flag nicht gesetzt ist, und das submitter Elements no-validate state falsch ist, dann interactively validate the constraints von Form und untersuchen die Ergebnis: wenn das Ergebnis negativ ist (der Beschränkungsvalidierungs geschlossen , dass es ungültige Felder gab und wahrscheinlich den Benutzer davon informierte) dann fire a simple event mit dem Namen invalid am Formular Element und dann diese Schritte abbrechen.

  5. Wenn die abgegeben von submit() Verfahren Flag nicht gesetzt ist, dann fire a simple event, die Blasen und ist cancelable genannt submit, bei Form. Wenn die Standardaktion des Ereignisses verhindert wird (d. H. , wenn das Ereignis abgebrochen wird), brechen Sie diese Schritte ab. Andernfalls fahren Sie mit fort (die Standardaktion besteht darin, die Übermittlung durchzuführen).

  6. Lassen Form Datensatz das Ergebnis constructing the form data set für Form im Zusammenhang mit Einreicher sein.

  7. Aktion Lassen action sein, die Einreicher des Elements.

  8. Wenn Aktion die leere Zeichenkette ist, lassen Aktionthe document's address des Form Dokument sein.

  9. Resolve die URL Aktion, bezogen auf das submitter Element. Wenn dies fehlschlägt, brechen Sie diese Schritte ab.

  10. Lassen Sie Aktion die resultierende absolute URL sein.

  11. Lassen Sie Aktionskomponenten die resultierende parsed URL sein.

  12. Lassen Sie Schema der scheme der resultierenden parsed URL sein.

  13. Lassen enctype das enctype Elements Einreicher sein.

  14. Lassen Methode das Element des methodEinreicher sein.

  15. Lassen Ziel der Einreicher sein des Elements target.

  16. Wenn der Benutzer ein bestimmtes browsing context angegeben zu verwenden, wenn Sie das Formular absenden, dann lassen Sie Ziel-Browsing Zusammenhang, dass browsing context seine. Im übrigen gilt the rules for choosing a browsing context given a browsing context nameZiel als die Namen und Form Browsing Kontext als Kontext, in dem der Algorithmus ausgeführt wird, und lassen SieZiel-Browsing Kontext die browsing context resultierenden sein.

  17. Wenn Ziel-Browsing Kontext im vorherigen Schritt erstellt wurde, oder alternativ, wenn das Dokument Form noch nicht completely loaded hat und die von submit() Verfahren vorgelegt Flag gesetzt, dann ersetzen lassen wahr sein. Ansonsten sei es falsch.

  18. Andernfalls wählen Sie die entsprechende Zeile in der Tabelle basierend auf dem Wert Schema wie von der ersten Zelle jeder Zeile angegeben. Dann, wählen Sie die entsprechende Zelle in dieser Zeile basierend auf dem Wert Methode wie in der ersten Zelle jeder Spalte angegeben. Springen Sie dann zu den Schritten , die in dieser Zelle benannt sind 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 Schema nicht einer von denen, die in dieser Tabelle aufgeführt ist, dann wird das Verhalten nicht von dieser Spezifikation definiert. Benutzeragenten sollten in das Fehlen einer anderen Spezifikation, die dies definiert, in einer Weise handeln, die analog zu der in dieser Beschreibung für ähnliche Schemata definierten ist.

Deshalb wird im Schritt 5 wird die submit gebrannt und kann abgebrochen werden Formularübermittlung zu verhindern. Die Aktion wird danach gelöst.

0

onsubmit wird zuerst ausgeführt, um das Format usw. zu überprüfen. Dann wird action ausgeführt, um die Daten zum Backend zu bekommen/zu posten.

Verwandte Themen