Większość nie zdaje sobie również sprawy z tego, że naciśnięty przycisk formularza można odróżnić, po prostu nadając im parę nazwa / wartość. Na przykład
<form action="process" method="post">
...
<input type="submit" name="edit" value="Edit">
<input type="submit" name="delete" value="Delete">
<input type="submit" name="move_up" value="Move up">
<input type="submit" name="move_up" value="Move down">
</form>
Po stronie serwera faktyczny naciśnięty przycisk można następnie uzyskać, po prostu sprawdzając obecność parametru żądania związanego z nazwą przycisku. Jeżeli nie jestnull
, przycisk został naciśnięty.
Widziałem wiele z niepotrzebnych JS hacki / obejścia za to, na przykład zmieniając akcję formularza lub zmieniania ukryte wartości wejściowej wcześniej zależności przycisk wciśnięty. To po prostu zadziwiające.
Ponadto widziałem prawie tyle samo hacków / obejść JS, aby zebrać zaznaczone pola wyboru, takie jak w wierszach tabeli. Przy każdym zaznaczeniu / sprawdzeniu wiersza tabeli JS dodawał indeks wiersza do jakiejś wartości oddzielonej przecinkami w ukrytym elemencie wejściowym, który byłby następnie dzielony / analizowany dalej po stronie serwera. Jest to wynikiem nieświadomości, że możesz nadać wielu elementom wejściowym tę samą nazwę, ale inną wartość i że nadal możesz uzyskać do nich dostęp jako tablicę po stronie serwera. Na przykład
<tr><td><input type="checkbox" name="rowid" value="1"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="2"></td><td> ... </td></tr>
<tr><td><input type="checkbox" name="rowid" value="3"></td><td> ... </td></tr>
...
Nieświadomość nadałaby każdemu polu wyboru inną nazwę i pominęłaby cały atrybut wartości. W niektórych sytuacjach bez hackowania / obejścia w JS widziałem również niepotrzebnie przytłaczającą magię w kodzie po stronie serwera, aby odróżnić zaznaczone elementy.