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.
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:
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.
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>
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.
Tags und Links javascript dhtml javascript-events dom-events