また、ほとんどの場合、名前と値のペアを指定するだけで押されたフォームボタンを区別できるという事実を認識していません。例えば
<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ハック/回避策のない状況では、不必要に圧倒的な魔法もいくつか見ました、チェックされた項目を区別するために、サーバー側のコードにます。