web-dev-qa-db-ja.com

同じ名前の複数のフォーム入力要素を持つことは有効ですか?

有効なマークアップであり、HTML/HTTP仕様に対して有効ですか?持っていたいなら

<form>
<input name="email" />
<input name="email" />
<input name="email" />
</form>

それは有効ですか?

8
Ryan Detzel

SOに記載

ブラウザはそれで問題ありません。ただし、アプリケーションライブラリによる解析方法は異なる場合があります。

プログラムは、同じ名前のアイテムをグループ化することになっています。 HTML仕様はこれを明示的に述べていませんが、チェックボックスに関するドキュメントで暗黙的に述べられています。

「フォーム内のいくつかのチェックボックスは同じコントロール名を共有できます。たとえば、チェックボックスを使用すると、ユーザーは同じプロパティに対して複数の値を選択できます。」

補足として、PHPでは、フィールド名にPHPのarry構文を使用する場合、同じ名前のフォームフィールドを持つことができます。

<form>
<input name="email[]" />
<input name="email[]" />
<input name="email[]" />
</form>

これにより、ブラウザはPHPがこれらのフィールドの配列を設定するために使用する構文でフォームフィールドを送信します:$_REQUEST['email']。 PHPを使用する場合、これを処理するための推奨される方法です。

8
John Conde

HTML5

非規範セクション 4.10.1.3サーバーと通信するためのフォームの構成 は、それが有効であることを明示的に示しています。

複数のコントロールに同じ名前を付けることができます。たとえば、ここではすべてのチェックボックスに同じ名前を付け、サーバーはその名前で送信された値を確認することで、チェックボックスがチェックされたことを識別します。ラジオボタンのように、value属性で一意の値も与えられます.

これの規範的なバージョンは、それがどこでも禁止されていないということであり、フォーム送信アルゴリズムは正確にどのリクエストが生成されるべきかを言っています: