RGAA 11.1Chaque champ de formulaire a-t-il une étiquette ?

Champs de formulaire sans étiquette

Le problème

L'absence d'étiquettes sur les champs de formulaire se produit lorsque les champs de saisie, cases à cocher, boutons radio, listes déroulantes et zones de texte ne disposent pas d'une étiquette associée de manière programmatique. Le critère RGAA 11.1 (correspondant aux WCAG 1.3.1 et 4.1.2, niveau A) exige que chaque champ de formulaire possède une étiquette qui lui est reliée.

Une étiquette visible à côté d'un champ ne suffit pas. L'étiquette doit être associée au champ soit via un élément `<label>` avec un attribut `for` correspondant, soit en enveloppant le champ dans le `<label>`, soit en utilisant `aria-label` ou `aria-labelledby`. Sans cette association programmatique, les lecteurs d'écran annoncent le champ comme un « champ de texte sans étiquette », laissant l'utilisateur deviner quelle information est attendue.

Ce problème est extrêmement courant sur les sites qui utilisent le texte placeholder comme seule étiquette. Bien que les placeholders puissent fournir des indices, ils disparaissent lorsque l'utilisateur commence à taper, ne laissant aucune indication sur la fonction du champ. Ils ont également un contraste insuffisant dans la plupart des navigateurs et ne sont pas annoncés de manière cohérente par tous les lecteurs d'écran. Se reposer uniquement sur les placeholders échoue à la fois aux critères RGAA 11.1 et 11.10.

Impact sur les utilisateurs

Pour les utilisateurs de lecteurs d'écran, un champ de formulaire sans étiquette est un jeu de devinettes. Le lecteur d'écran peut annoncer « zone de texte » ou « champ de saisie » sans aucune indication sur ce qu'il attend -- un nom, un email, un numéro de téléphone ou un mot de passe. Les utilisateurs doivent soit deviner, soit essayer de déduire la fonction du contexte environnant, ce qui est peu fiable et chronophage.

Les utilisateurs de commande vocale (par ex. Dragon NaturallySpeaking) dépendent aussi des étiquettes visibles car ils utilisent le texte de l'étiquette pour cibler les champs par la voix. Sans étiquette, ils ne peuvent pas dire « cliquer email » pour focaliser le champ email. Les utilisateurs d'écran tactile bénéficient également des étiquettes, car cliquer sur une étiquette focalise son champ associé, offrant une cible de clic plus grande.

Des étiquettes manquantes dans les formulaires critiques comme la connexion, l'inscription, le paiement et le contact empêchent directement les utilisateurs d'accomplir des actions essentielles. Ce n'est pas seulement un problème d'accessibilité -- cela augmente aussi les taux d'abandon de formulaire pour tous les utilisateurs qui trouvent les champs non étiquetés déroutants.

Votre site a-t-il ce problème ?

106 critères RGAA analysés en 5 minutes par notre IA.

Testez votre site gratuitement

Exemple de code

Avant (non conforme)
<!-- Placeholder seul, pas d'étiquette -->
<input type="text" placeholder="Nom complet">
<input type="email" placeholder="Email">

<!-- Étiquette présente mais non associée -->
<span>Mot de passe</span>
<input type="password">

<!-- Aucune étiquette -->
<select>
  <option>Choisissez un pays</option>
</select>
Après (conforme)
<!-- Étiquette explicite avec for/id -->
<label for="nom">Nom complet</label>
<input type="text" id="nom" placeholder="ex. Marie Dupont">

<label for="email">Email</label>
<input type="email" id="email" placeholder="marie@exemple.fr">

<!-- Étiquette englobante -->
<label>
  Mot de passe
  <input type="password">
</label>

<!-- Étiquette pour la liste déroulante -->
<label for="pays">Pays</label>
<select id="pays">
  <option value="">Choisissez un pays</option>
</select>

Comment Scrutia détecte ce problème

Scrutia inspecte chaque contrôle de formulaire de vos pages et vérifie l'existence d'une association programmatique avec une étiquette -- que ce soit via un élément `<label>` avec un attribut `for` correspondant, un `<label>` englobant, ou des attributs ARIA (`aria-label`, `aria-labelledby`). Il signale aussi les champs qui reposent uniquement sur le texte placeholder sans étiquette persistante. Chaque constatation inclut l'emplacement du champ, son état actuel et un extrait de code montrant comment ajouter l'étiquette correcte.

Questions fréquentes

Peut-on utiliser le texte placeholder à la place d'une étiquette ?
Non. Le texte placeholder n'est pas un substitut à une étiquette. Les placeholders disparaissent quand l'utilisateur tape, ont un contraste insuffisant dans la plupart des navigateurs et ne sont pas annoncés de manière cohérente par les lecteurs d'écran. Utilisez toujours un élément <label> visible et le placeholder uniquement comme indication complémentaire.
Quand faut-il utiliser aria-label au lieu d'un élément <label> ?
Utilisez aria-label uniquement quand une étiquette visible n'est pas appropriée pour le design -- par exemple, un champ de recherche avec une icône de loupe et aucun texte visible. Dans la plupart des cas, un élément <label> visible est préférable car il bénéficie à tous les utilisateurs, pas seulement aux utilisateurs de lecteurs d'écran.
Les étiquettes masquées comptent-elles ?
Oui, une étiquette visuellement masquée (via une classe CSS sr-only / visually-hidden) fournit toujours un nom accessible aux lecteurs d'écran. Cependant, une étiquette visible est toujours préférable car elle aide les utilisateurs voyants, les utilisateurs de commande vocale et offre une cible de clic plus grande.
Comment les étiquettes manquantes affectent-elles les taux de conversion ?
Les études montrent que les formulaires clairement étiquetés ont des taux de complétion plus élevés. Les utilisateurs qui ne peuvent pas rapidement identifier ce que chaque champ attend sont plus susceptibles d'abandonner le formulaire. Des étiquettes appropriées réduisent les erreurs et permettent un remplissage plus rapide pour tout le monde.

Votre site a-t-il ce problème ?

Scrutia audite votre site sur 106 critères RGAA en 5 minutes. Navigation clavier, composants ARIA, focus visible, contrastes, et bien plus.

Lancer un audit gratuit