1UnitedPower: input oder button für submit-Elemente?

Beitrag lesen

Hakuna matata!

Der <button> hat gegenüber dem <input type="submit"> allerdings den klaren Vorteil, dass seine Beschriftung, von dessen Wert abweichen kann.

<button name="action" value="0">reparieren</button>
<button name="action" value="1">deinstallieren</button>

Das verarbeitende Skript, das das Formular entgegen nimmt, muss dann keine Entscheidungen auf Basis (möglicherweise sprachabhängiger) Beschriftungen treffen.

ich hab mich schon immer gewundert, dass das manche machen. warum nicht einfach den *namen* des elements benutzen für die unterscheidung?

Das value-Feld auszuwerten hat einige praktische Vorteile gegenüber der Prüfung auf vorhandene Schlüssel:

Von mehreren Submit-Buttons kann immer nur einer betätigt werden. Die Auswahl, die man trifft, ist also vergleichbar mit der Auswahl aus einer Gruppe Radiobuttons (sowie in Matthias' Beispiel) oder aus einer Selectbox. Bei diesen Eingabefeldern wird die getroffene Auswahl notwendiger Weise als Wert eines Schlüssel/Werte-Paares kodiert und nicht als diskrete Schlüssel. Wenn man den Fall „mehrere Submitbuttons“ analog zu „Auswahl aus einer Gruppe Radiobuttons“ und „Auswahl aus einer Select-Box“ behandelt, ergibt sich der Vorteil, dass die Fälle auch serverseitig gleich behandelt werden können. Ferner kann auf diese Weise der wechselseitige Ausschluss der Optionen schon bei der Übermittlung der Daten sichergestellt werden. Wenn man mehrere Submit-Buttons mit unterschiedlichen Namen auszeichnet ist das nicht möglich. Der Server müsste immer auch den Fall prüfen, was ist wenn zwei Optionen gesetzt sind, die eigentich nicht beide gleichzeitig aktiv sein sollten. henman ist hier wunderbar in die Falle getappt. Was würde denn nun passieren, wenn $_POST['speichern'] und $_POST['abbrechen'] gesetzt wären? Dieser Fall sollte eigentlich nie eintreten.

Eine Auswertung des Wertes zu einem immer gleichen Schlüssel kann zudem in vielen Fällen generisch gestaltet sein. Sollte irgendwann ein dritter Submit-Button (oder eine dritte Radiobox) hinzukommen, muss kein serverseitiger Code geschrieben werden, der die Formulardaten auf einen neuen Schlüssel überprüft, evtl. muss sogar gar kein neuer Code geschrieben werden.

--
“All right, then, I'll go to hell.” – Huck Finn