49 votes

Formulaire HTML avec plusieurs éléments de contrôle cachés du même nom

Est-il légal d'avoir un formulaire HTML avec plus d'un élément de contrôle "caché" avec le même nom? Je m'attends à obtenir les valeurs de tous ces éléments sur le serveur. Si c'est légal, les principaux navigateurs implémentent-ils correctement le comportement ?

36voto

Powerlord Points 43989

Les navigateurs sont OK avec elle. Cependant, la façon dont la bibliothèque de l'application l'analyse peut varier.

Les programmes sont censés de groupe portant le même nom à des éléments ensemble. Alors que la spécification HTML n'est pas explicitement dis cela, c'est implicitement indiqué dans la documentation sur les cases à cocher:

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

27voto

Jonathan Sampson Points 121800

Différentes technologies côté serveur varient. Avec PHP, vous pouvez utiliser une syntaxe de type tableau pour le nom pour forcer la création d'une collection sur le serveur. Si posté sur le serveur, `` sera un tableau avec deux valeurs, ```` et:

19voto

DavGarcia Points 9322

Si vous avez quelque chose comme ceci:

Votre chaîne de requête va se révéler ressemblant `` à ... Selon le logiciel serveur que vous utilisez pour parse la chaîne de requête, cela pourrait ne pas fonctionner bien.

5voto

Christian Nunciato Points 8461

Oui, et la plupart des serveurs d'application permettra de recueillir les éléments correspondants et de les concaténer avec des virgules, tels qu'un formulaire comme ceci:

<html>
<form method="get" action="http://myhost.com/myscript/test.asp">
<input type="hidden" name="myHidden" value="1">
<input type="hidden" name="myHidden" value="2">
<input type="hidden" name="myHidden" value="3">
<input type="submit" value="Submit">
</form>
</html>

... permettrait de résoudre à une URL (dans le cas -- POST fonctionne de la même façon, tout de même) comme ceci:

http://myhost.com/myscript.asp?myHidden=1&myHidden=2&myHidden=3

... et d'être exposés à vous en code comme ceci: (par exemple, à la suite de quelque chose comme Réponse.Écrire(À La Demande.QueryString("myHidden")):

1, 2, 3

Afin de saisir les valeurs, vous devriez juste fractionner la chaîne et d'y accéder comme un tableau (ou tout ce qui est comparable dans la langue de votre choix).

(Doit être précisé: En PHP, c'est légèrement différent (comme Johnathan souligne, support de la notation expose les éléments d'un tableau à votre code PHP), mais l'ASP, ASP.NET et CF exposent tous les valeurs d'une liste séparée par des virgules. Donc oui, la double appellation est tout à fait valable.)

0voto

CaptainJanuary Points 1

Je crois que c'est légal, du moins dans les cas de boutons radio et de cases à cocher. Lorsque je dois ajouter dynamiquement des entrées de textbox dans XSLT, je leur donne tous le même nom; dans ASP.NET, Request.Form["whatever-name"] est une chaîne de toutes ces valeurs se sapéées par la virgule.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X