Більшість також не знає про те, що ви можете розрізнити кнопку форми, натиснуту, просто давши їм пару імен / значення. Напр
<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>
На стороні сервера фактичну натиснуту кнопку можна отримати, просто перевіривши наявність параметра запиту, пов'язаного з ім'ям кнопки. Якщо його немає null
, тоді була натиснута кнопка.
Я бачив багато непотрібних JS-хак / рішень для цього, наприклад, змінити форму форми або змінити приховане вхідне значення заздалегідь, залежно від натиснутої кнопки. Це просто вражає.
Крім того, я бачив майже стільки ж JS-хак / обхідних шляхів, щоб зібрати галочки з декількох прапорців, як, наприклад, у рядках таблиць. Після кожного вибору / перевірки рядка таблиці JS додає індекс рядків до деякого значення, розділеного комою, у прихованому вхідному елементі, який потім буде розділений / проаналізований далі на стороні сервера. Це результат неусвідомлення того, що ви можете надати декільком елементам введення однакове ім'я, але інше значення, і що ви все ще можете отримати доступ до них як до масиву на стороні сервера. Напр
<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>
...
Неінформованість дасть кожному прапорець інше ім'я та опустить цілий атрибут значення. У деяких ситуаціях без JS-хак / без обходу я також бачив якусь зайву перевагу магії в коді сторони сервера, щоб розрізнити перевірені елементи.