É válido ter vários elementos de entrada de formulário com o mesmo nome?


11

É uma marcação válida e é válida para a especificação HTML / HTTP? Se eu quisesse ter

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

isso é válido?


Por definição, os botões de opção no mesmo grupo têm o mesmo nome.
MrWhite 28/02

Respostas:


9

Conforme declarado no SO :

Os navegadores estão bem com isso. No entanto, como a biblioteca de aplicativos analisa isso pode variar.

Os programas devem agrupar itens nomeados de forma idêntica. Embora a especificação HTML não diga isso explicitamente, ela está implicitamente declarada na documentação em caixas de seleção:

"Várias caixas de seleção em um formulário podem compartilhar o mesmo nome de controle. Assim, por exemplo, as caixas de seleção permitem que os usuários selecionem vários valores para a mesma propriedade."

Em uma nota lateral, no PHP você pode ter campos de formulário com o mesmo nome se usar a sintaxe arry do PHP para o nome do campo:

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

Isso fará com que o navegador para enviar mais os campos do formulário em uma sintaxe que o PHP irá usar para preencher uma matriz para esses campos: $_REQUEST['email']. Se você usa PHP, esta é a maneira preferida de lidar com isso.


5

HTML5

A seção não normativa 4.10.1.3 Configurando um formulário para se comunicar com um servidor diz explicitamente que é válido:

Vários controles podem ter o mesmo nome; por exemplo, aqui damos a todas as caixas de seleção o mesmo nome e o servidor distingue qual caixa de seleção foi marcada ao ver quais valores são enviados com esse nome - como os botões de opção, eles também recebem valores exclusivos com o atributo value.

A versão normativa disso é simplesmente que não é proibida em nenhum lugar, e o algoritmo de envio de formulários diz exatamente qual solicitação deve ser gerada:

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.