Ermitteln Sie, welches Element ein Formular von onsubmit gesendet hat

8

Gibt es eine Möglichkeit zu bestimmen, welches Element ein Formular in einem onsubmit-Handler übergeben hat? Versuch, einen generischen Handler zu schreiben, der weiß, auf welches Element geklickt wurde. Zum Beispiel, angesichts dieser Form:

%Vor%

Wie kann ich innerhalb des onSubmitHandler bestimmen, welche Schaltfläche zum Senden geklickt wurde? Ich habe versucht, event.target/event.srcElement, aber das gibt das Formular, nicht die eigentliche Schaltfläche senden.

Update: Ich schreibe hier ein generisches Steuerelement, also hat es keine Ahnung, was auf dem Formular steht. Die Lösung muss funktionieren, ohne den HTML-Code des Formulars zu kennen und zu ändern. Mein Fallback durchläuft das DOM, um alle Schaltflächen zu finden, die eine Übermittlung verursachen könnten, aber ich möchte das vermeiden.

    
Chris Hynes 12.02.2009, 15:43
quelle

5 Antworten

3

Eine alternative Lösung wäre, den Ereignis-Trigger vom send-Ereignis des Formulars zum Ereignis onclick des Übermittlungselements zu verschieben:

%Vor%

In Ihrer Handler-Funktion können Sie das übergebende Element ermitteln, indem Sie einfach den Namen des Ereignisziels überprüfen. Wenn Sie auf die Informationen des Formulars oder andere Elemente zugreifen müssen, können Sie dies über das Attribut "form" des Übermittlungselements abrufen.

    
Joseph Tary 12.02.2009 16:18
quelle
1

Ich würde keinen Standardschaltflächentyp verwenden.

Lassen Sie die Submit-Funktion ein zusätzliches Argument annehmen, das das Element darstellt, das sie gesendet hat, und die Schaltfläche würde einen onclick haben, der this als Parameter sendet:

%Vor%     
hasen 12.02.2009 16:45
quelle
0
  

Mein Fallback führt das DOM durch, um alle Knöpfe zu finden, die eine Submission verursachen könnten, aber ich möchte das vermeiden.

... und Hinzufügen von Klick-Listenern, um die zuletzt angeklickte Schaltfläche zu speichern, die dann vom Übermittlungs-Listener gelesen wird, richtig?

Ich kann mir keinen anderen Weg vorstellen, Entschuldigung.

    
bobince 12.02.2009 16:54
quelle
0

Diese Lösung funktioniert in Firefox. Ich habe es in anderen konformen Browsern oder IE nicht überprüft.
Ich bin nicht zu hoffnungsvoll für den IE, du müsstest hineinsehen und deine Ergebnisse veröffentlichen.

%Vor%

_

%Vor%     
meouw 12.02.2009 17:04
quelle
0

Klicken Sie auf Ereignis-Blase, so dass Sie einfach einen "onclick" Listener zum Formular selbst hinzufügen können, der überprüft, ob die Klickzielquelle eine Übermittlungsschaltfläche ist; Ist dies der Fall, speichern Sie einen Verweis darauf, der mit dem Formular verknüpft ist, auf das Sie über den Handler für die Weitergabe von onsits zugreifen können.

Wenn Sie auch mit "Enter" -übermittelten Formularen arbeiten möchten, hören Sie sich das "onkeypress" oder "onkeydown" -Ereignis des Formulars an, prüfen Sie "Enter" und löschen Sie Ihre Submit-Button-Informationen, falls das Event-Target NOT ist eine Senden-Schaltfläche.

    
Doin 11.05.2013 18:37
quelle

Tags und Links