Ich weiß, dass diese Frage sehr nach einem Haufen anderer klingt, aber ich schwöre, ich kann nirgendwo die richtige Lösung finden. Ich habe ein Legacy-Formular mit mehreren Übergabeschaltflächen. Wenn auf einen geklickt wird, muss ich ein bisschen clientseitige Validierung durchführen und möglicherweise die Übermittlung stoppen. Wenn auf den anderen geklickt wird, muss ich diese Validierung nicht durchführen.
Was ich finde, ist, dass ich, wenn ich einen .submit()
-Handler erstelle, scheinbar nicht darauf zugreifen kann, auf welche Schaltfläche tatsächlich geklickt wurde. Auf der anderen Seite kann ich nicht verhindern, dass das Formular über .click()
(oder .preventDefault()
) einreicht, wenn ich das .stopImmediatePropagation()
-Ereignis der Schaltfläche erfassen muss.
Hier ist die letzte Iteration des Codes, der versucht, die Schaltflächen .click()
handler:
Was fehlt mir hier? There hat eine Möglichkeit, dies zu tun und es scheint, als sollte es ziemlich einfach sein, aber ich werde verdammt sein, wenn ich überhaupt etwas Glück gehabt habe.
Danke.
Vielleicht so etwas?
%Vor%Das Hauptproblem bei diesem Code wäre die Browserkompatibilität - ich weiß nicht, ob alle Browser gleich funktionieren, wenn das Klickereignis vor dem Einsenden abgefangen wird. Ich erinnere mich, dass es auf einer Version von IE anders war, vielleicht 7. Aber es ist reparierbar.
@Przemek hat dafür die richtige Antwort und Vorgehensweise.
Ich würde nur hinzufügen, um sicherzustellen, dass Sie Ihre Funktion in $(document).ready(function(){}
setzen, wenn Sie eine Formularübermittlung durchführen.
Funktioniert in allen Browsern. Siehe unten für die Lösung, die für mich basierend auf Przemeks Beispiel funktionierte:
%Vor%Tags und Links jquery