form-control-programmatic-label-present

Les contrôles de formulaire doivent avoir un libellé programmatique

automaticWCAG 1.3.1, 3.3.2, 4.1.2 (A)confiance : mediumgravité : seriousrobust

Vérifie que les contrôles de formulaire ont un libellé programmatique via <label>, aria-label, aria-labelledby, title ou placeholder.

Applicabilité. S’applique aux éléments <input>, <select> et <textarea> inclus dans l’arbre d’accessibilité, à l’exception des types d’input hidden, submit, reset, button et image, qui tirent leur nom d’un attribut value ou alt plutôt que d’un libellé. Un contrôle dont l’attribut role se résout (premier jeton désignant un rôle connu, sans tenir compte de la casse) en un rôle de widget ARIA explicite est hors périmètre : button, checkbox, combobox, listbox, textbox, slider et le reste de ROLE_OWNED_ELSEWHERE ont chacun leur propre règle de nommage, et role="presentation"/"none" retire un contrôle sauf s’il reste tabulable.

Attendu. Chaque contrôle concerné porte un libellé programmatique par l’un des mécanismes que résout helpers.getLabelMethod, dans son ordre de priorité : un <label> associé, aria-labelledby, aria-label, title, puis placeholder. N’importe lequel des cinq satisfait cette règle. Savoir si les deux plus faibles conviennent comme libellé principal est une autre question, posée par form-control-programmatic-label-quality.

Exemples

pass
<label for="email">Full name</label>
<input id="email" type="text">

L’association <label for> donne à l’input un libellé programmatique.

fail
<input type="text">

Ni <label>, ni aria-label, ni aria-labelledby : rien ne nomme le champ de façon programmatique.

Règles associées

Voir le code source