次のHTMLフォームがあるとします。
<form>
...
<input type="submit" name="queue" value="Queue item">
<input type="submit" name="submit" value="Submit item">
</form>
ユーザーがどのボタンをクリックしたかを(javascriptを使用せずに)知るにはどうすればよいですか?
送信されたデータを確認したところ、"Queue Item"
をクリックしてから"queue" = "Queue Item"
はサーバーに送信されます。そして、"Submit item"
をクリックしてから"submit" = "Submit item"
セットを送信しました。
この動作に依存できますか? HTMLフォームの標準のどこかに文書化されていますか?どうやってやるの?
はい、これに頼ることができます。完全に文書化されています こちら 。特定の関連行は言う:
フォームが処理のために送信されると、一部のコントロールの名前は現在の値とペアになり、これらのペアはフォームとともに送信されます。名前/値のペアが送信されるコントロールは、成功したコントロールと呼ばれます。
そして
フォームに複数の送信ボタンが含まれる場合、アクティブ化された送信ボタンのみが成功します。
うん、あなたはその振る舞いに頼ることができます。
いつ <input type="submit" name="queue" value="Queue item">
をクリックすると、フィールド「キュー」が設定され、「送信」は設定されません。
一方、他のボタンをクリックすると、「送信」フィールドが設定され、「キュー」は設定されません。
これに確信が持てない場合は、それらを2つのフォームに分割し、そのように作業できます。
この動作に依存できます。入力の値を取得します。 javascript
を使用して非表示のフォームの値を切り替えますが、javascript
に言及していないので、複数の選択肢はありません。
それは標準です。 input
タグであり、value
があるため、value
が送信されます。
フォームを2つのフォームに分割し、他のアクションに必要な他の入力を複製します。または、ユーザーがアイテムを「キュー対送信」するかどうかを本当に知りたい場合は、両方の送信ボタンをラジオ選択に変更して2つのオプションを切り替え、新しい別個の「フォームを送信」ボタンを使用します。
その状況で、ワンクリックオプションが必要な場合は、Javascriptを使用してラジオボタンの1つが選択されていることを検出し、フォームを即座に自動送信できます。 (フォーム処理ではなく、ユーザーインターフェイスにJavascriptを使用)