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?
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?
Réponses:
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.
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:
application/x-www-form-urlencoded
boucle sur le "jeu de données de formulaire" et crachent plusieurs key=val
https://www.w3.org/TR/html5/forms.html#url-encoded-form-data