Est-il valide d'avoir plusieurs éléments d'entrée de formulaire avec le même nom?


11

Est-ce un balisage valide et est-il valide pour la spécification HTML / HTTP? Si je voulais avoir

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

est-ce valable?


Par définition, les boutons radio du même groupe portent le même nom.
MrWhite

Réponses:


9

Comme indiqué sur SO :

Les navigateurs sont d'accord avec ça. Cependant, la façon dont la bibliothèque d'applications l'analyse peut varier.

Les programmes sont censés regrouper des éléments portant le même nom. Bien que la spécification HTML ne le dise pas explicitement, elle est implicitement indiquée dans la documentation sur les cases à cocher:

"Plusieurs cases à cocher dans un formulaire peuvent partager le même nom de contrôle. Ainsi, par exemple, les cases à cocher permettent aux utilisateurs de sélectionner plusieurs valeurs pour la même propriété."

Sur une note latérale, en PHP, vous pouvez avoir des champs de formulaire avec le même nom si vous utilisez la syntaxe arry de PHP pour le nom du champ:

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

Cela entraînera le navigateur pour envoyer sur les champs de formulaire dans une syntaxe PHP utilisera pour remplir un tableau pour les champs suivants: $_REQUEST['email']. Si vous utilisez PHP, c'est la meilleure façon de le gérer.


5

HTML5

La section non normative 4.10.1.3 Configurer un formulaire pour communiquer avec un serveur dit explicitement qu'il est valide:

Plusieurs contrôles peuvent avoir le même nom; par exemple, ici nous donnons à toutes les cases à cocher le même nom, et le serveur distingue quelle case à cocher a été cochée en voyant quelles valeurs sont soumises avec ce nom - comme les boutons radio, ils reçoivent également des valeurs uniques avec l'attribut value.

La version normative de ceci est simplement qu'elle n'est interdite nulle part, et l'algorithme de soumission de formulaire indique exactement quelle demande doit être générée:

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.