154 votes

Un champ de saisie peut-il avoir deux étiquettes ?

Mary avait un petit formulaire, et ses champs étaient étiquetés exactement comme ça.
Dès qu'une erreur se glissait, elle semait la confusion.

J'ai une étiquette pour chaque champ de saisie... une affaire assez classique. Après avoir validé le formulaire, j'affiche un petit paragraphe utile en haut du formulaire détaillant les informations manquantes ou incorrectes.

Puis-je avoir deux étiquettes pour le même champ de saisie ? L'une dans le formulaire proprement dit, et l'autre dans le texte de rappel de validation ? Y a-t-il une raison pour laquelle je ne devrais pas le faire ?

0 votes

Avez-vous essayé ce qui se passe ? Si cela fonctionne, je ne pense pas que cela puisse causer des dommages à votre formulaire ou à la page. Et vous obtiendrez un plus car l'utilisateur pourra cliquer sur l'erreur de validation et mettre l'accent sur le bon champ.

0 votes

Je n'ai pas essayé, mais je suppose que c'est possible. Mais je ne recommande pas de l'utiliser, parce qu'un label définit ce à quoi le champ est destiné, un message d'erreur ne le fait pas. Je ne devrais donc pas utiliser d'étiquette pour les avertissements de validation.

1 votes

S'agit-il d'une question générale sur la conception et l'utilisation de l'interface utilisateur ?

188voto

jsumners Points 6247

Je suppose que cette question concerne les formulaires HTML. De la spécification :

L'élément LABEL peut être utilisé pour joindre des informations aux contrôles. Chaque élément LABEL est associé à un seul contrôle de formulaire.

Ainsi, chaque contrôle de formulaire peut être référencé par plusieurs étiquettes, mais chaque étiquette ne peut référencer qu'un seul contrôle. Ainsi, s'il est utile d'avoir une deuxième étiquette pour un contrôle (et dans la situation que vous décrivez, c'est le cas), n'hésitez pas à ajouter une deuxième étiquette.

3 votes

Il s'agit plus d'une question de convivialité/accessibilité que de HTML. Le HTML fonctionne.

3 votes

Nous devrions tous utiliser uniquement du code valide, sinon les choses pourraient se briser à l'avenir ou pour quelqu'un d'autre ou avec une bibliothèque JS ou autre.

2 votes

La bonne réponse est celle de Rob. Cette solution fonctionne pour les utilisateurs voyants et échoue dans certains lecteurs d'écran. Aslum, je suppose que vous avez accepté la réponse de jsummers ci-dessus avant que Rob ne soumette sa réponse.

50voto

Rob Whelan Points 645

Le code HTML est légal et fonctionne (un clic sur l'une des étiquettes transfère le focus sur le champ en question).

C'est un peu plus délicat à faire correctement pour des raisons d'accessibilité.

Ce n'est pas une approche "commune", et pour cette raison, au moins un lecteur d'écran commun (j'ai testé avec NVDA) ne lit que la première étiquette lorsque vous déplacez le focus dans le champ - il ignore toute étiquette supplémentaire pour le même champ.

Ainsi, si votre message d'erreur se trouve en haut de la page, un utilisateur aveugle ou malvoyant qui navigue dans les champs n'entendra que le message d'erreur lorsqu'il tombera sur le champ en question, et non le "vrai" libellé à côté.

Par conséquent, si vous formulez correctement le message d'erreur, cela peut être une bonne chose (c'est certainement mieux que de simplement mettre en évidence le champ non valide en rouge !)

4 votes

C'est correct, et la manière correcte de coder ceci est via la fonction attribut aria-describedby

29voto

Gert Grenander Points 9992

Oui, vous pouvez faire pointer plusieurs étiquettes sur le même contrôle de formulaire. Ceci est parfaitement légal :

<label for="fname">First name</label>
<label for="fname">Enter your info</label>
<label for="fname">Why not a third label</label>
<input type="text" id="fname" name="fname">

Ceci n'est qu'un exemple... normalement, vous devriez envelopper ces lignes avec une étiquette puisqu'elles sont proches.

13 votes

+1 pour le lien vers le doc où il est clairement indiqué que "Plus d'un LABEL peuvent être associés au même contrôle en créant des références multiples via l'attribut for attribut."

2voto

Guido Hendriks Points 2723

Je n'ai pas essayé, mais je suppose que c'est possible. Mais je ne recommande pas de l'utiliser, parce qu'une étiquette définit ce à quoi le champ est destiné, un message d'erreur ne le fait pas. Je ne devrais donc pas utiliser d'étiquette pour les avertissements de validation.

1voto

Felipe Cypriano Points 1477

Avez-vous essayé ce qui se passe ? Si cela fonctionne, je ne pense pas que cela puisse causer des dommages à votre formulaire ou à la page. Et vous obtiendrez un plus car l'utilisateur pourra cliquer sur l'erreur de validation et mettre l'accent sur le bon champ.

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