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.