Der Unterschied zwischen .trigger("submit") und .trigger("click") bei Formularen

In HTML-Formularen ist es valide, mehrere Submit-Buttons für verschiedene Actions zu definieren. So ein Formular mit Javascript abzuschicken, kann allerdings zu Problemen führen.

<form method="post">
    <input class="submit-button" type="submit" name="submit" value="Speichern" />
    <input class="remove-button" type="submit" name="remove" value="Löschen" />
</form>

Wenn man mit PHP überprüfen möchte, ob $_POST['submit'] gesetzt ist, ist das eigentlich unproblematisch. Aufpassen muss man, wenn man das Formular mit z. B. jQuery abschickt.

Versucht man das mit dem naheliegenden $('form').trigger('submit'), wird submit überraschenderweise nicht mit übergeben. Aber warum? Da ein Formular mehrere Submit-Buttons mit verschiedenen name-Werten haben kann, weiß jQuery nicht, welcher Submit-Button getriggert werden soll und schickt daher einfach keinen der beiden mit.

Um das zu verhindern, kann ein Formular auch per $('.submit-button').trigger('click') gesendet werden, dann wird submit mitgesendet. 👍

Philipp Kühn

Entschlossen überwindet Philipp jede technische Hürde mit einer cleveren Lösung. Dabei ist der ausgesprochene Ästhet immer am Puls der Zeit.