Wie Sie wissen, welcher Submit-Button das onsubmit-Ereignis ausgelöst hat

8

Wenn Sie mehr als eine Schaltfläche zum Senden in einem Formular haben, gibt es eine Möglichkeit zu wissen, welche das Ereignis onsubmit ausgelöst hat, ohne den Schaltflächen selbst Code hinzuzufügen?

Bearbeiten: Ich muss die Überprüfung auf der Clientseite durchführen, d. h. mit JavaScript.

    
GetFree 21.08.2010, 17:54
quelle

4 Antworten

5

Das Ereignis "submit" wird nicht durch die Schaltfläche ausgelöst, sondern durch das Formular ausgelöst. Ein schneller Test beweist das:

%Vor%

Obwohl in Firefox, können Sie event.explicitOriginalTarget -Eigenschaft bei Ereignis verwenden, um die Eingabe (submit) zu erhalten, die angeklickt wurde, wodurch das Submit-Ereignis ausgelöst wurde. (wenn du es wissen willst)

Die besten Optionen für Sie sind also:

  • Haben Sie einen anderen Wert für Ihre Übermittlungsschaltflächen ODER
  • Habe diese als normale Buttons und klicke auf Handler dazu per Javascript.
naikus 21.08.2010, 18:06
quelle
1

Wird ein Ereignis-Listener für jede Schaltfläche als Code hinzugefügt? Sonst gibt es keine Möglichkeit zu sehen, welche Schaltfläche das Submit-Ereignis ausgelöst hat, es sei denn, Sie möchten die Mausposition während des Ereignisses berechnen und sie mit den Tastenpositionen vergleichen.

Andernfalls wäre die nächstbeste Sache, einen Ereignishandler für das click-Ereignis der Schaltfläche zuzuweisen und den Namen dieser Schaltfläche einer Variablen zuzuordnen, die Sie im submit-Ereignis des Formulars überprüfen können.

    
Cristian Sanchez 21.08.2010 18:06
quelle
1

Es gibt ein paar Möglichkeiten, an die ich denken kann.

Sie können verschiedene Werte verwenden, und Ihr unauffälliges JavaScript kann dabei helfen.

Eine Diskussion über diesen Ansatz (mit verschiedenen Werten für jede Schaltfläche) ist hier:

Ссылка

Ich neige dazu, verschiedene name Attribute für jede Schaltfläche zu verwenden.

Ein Blog dazu ist hier: Ссылка

Ich folge keinem von beiden, welcher Ansatz am besten funktioniert, hängt von verschiedenen Faktoren ab, wie zum Beispiel, ob du die Submit-Buttons in Javascript handelst, oder ob der Server das Formular bekommt, dann musst du herausfinden was der Benutzer wollte.

Persönlich bevorzuge ich den Ajax-Ansatz, bei dem ich einfach Ereignisse an die Schaltflächen anschließe, nachdem die Seite geladen wurde, indem ich unauffälliges JavaScript verwende und dann basierend auf der Benutzerauswahl die richtige Funktion aufruft, aber das hängt davon ab ob Sie einen Skript-Link zur HTML-Seite hinzufügen können.

UPDATE:

Um dies mit Javascript zu tun, ist der einfachste Weg, ein Ereignis auf den Klick der Schaltfläche anzuhängen, und dann den Namen zu betrachten, um zu entscheiden, wie man damit umgeht.

Tatsächlich muss das Formular nie wirklich an den Server gesendet werden, aber Sie können alles im Hintergrund behandeln, indem Sie die Parameter (Optionen) einpacken und an den Server senden und den Benutzer über die Ergebnisse informieren / p>     

James Black 21.08.2010 18:01
quelle
1

Tut mir leid, diesen sehr alten Thread aufzuwärmen. Die Frage war hier nicht beantwortet worden, aber hier wurden nur Ansätze für praktische Umgehungslösungen angegeben.

Aber das Ereignisobjekt enthält Informationen darüber, welches Objekt es ausgelöst hat. In einem Handler b4submit (e) können Sie den Submit-Button wie folgt erhalten:

%Vor%

Aber es ist ein HTML-Objekt mit allen Attributen, die Sie ihm zugewiesen haben, wie Name, ID, Wert usw.

Ich bin nach einer Fehlersuche auf dieses Problem gestoßen, und ich dachte, es könnte von größerem Interesse sein, als eine saubere Lösung für dieses Problem.

    
NoPro 06.05.2016 12:55
quelle