J'essaie de rendre un formulaire accessible. Dois-je faire mes entrées ont à la fois disabled
et aria-disabled
attributs, ou juste un?
<label for="textbox1">Input</label>
<input id="textbox1" type="text" name="Text Box" disabled>
Ou comme ça?
<label for="textbox1">Input</label>
<input id="textbox1" type="text" name="Text Box" aria-disabled="true">
Ou comme ça?
<label for="textbox1">Input</label>
<input id="textbox1" type="text" name="Text Box" aria-disabled="true" disabled>
Je peux prendre votre exemple, le mettre dans un CodePen , et le vérifier dans JAWS et NVDA (désolé, pas de VoiceOver aujourd'hui):
<label for="textbox1">Input</label>
<input id="textbox1" type="text" name="Text Box" disabled>
Vous serez heureux de savoir que NVDA et JAWS ignorent le champ (ou annoncent que celui-ci est désactivé).
En bref, vous n'avez pas besoin de aria-disabled
plus longtemps. Utilisez simplement disabled
.
Vous pouvez lire un peu plus sur les attributs ARIA que vous pouvez vider dans cet article de Steve Faulkner (l'un des éditeurs de la spécification ARIA) de 2015 (si aria-disabled
_ n'est pas explicitement répertorié, le concept est le même): http://html5doctor.com/on-html-belts-and-aria-braces/
Si ma réponse ressemble à votre autre question à propos de required
par rapport à aria-required
, c’est parce que c’est essentiellement la même réponse.
En bref, vous n’avez plus besoin d’aria-disabled. Il suffit d'utiliser désactivé.
Pour compléter la réponse @aardrian.
Lorsque vous utilisez un contrôle HTML qui prend en charge en natif l'attribut disabled
, vous n'avez pas besoin du aria-disabled
attribut.
Si vous utilisez un contrôle personnalisé, vous pouvez utiliser le aria-disabled
attribut. Par exemple, dans le code suivant, le bouton "Pause" sera désactivé jusqu'à ce que le bouton "Lecture" soit enfoncé (notre javascript changera alors tabindex
et aria-disabled
les attributs).
<img src="controls/play.png"
id="audio-start"
alt="Start"
role="button"
aria-disabled="false"
tabindex="0" />
<img src="controls/pause.png"
id="audio-pause"
alt="Pause"
role="button"
aria-disabled="true"
tabindex="-1" />
Notez que selon le W3C:
Les éléments désactivés risquent de ne pas recevoir le focus de l'ordre des onglets. [...] En plus de définir l'attribut aria-disabled, les auteurs DEVRAIENT changer l'apparence (grisé, etc.) pour indiquer que l'élément a été désactivé.
Une distinction importante est que lorsqu’on utilise la voix-off, l’élément avec seulement la propriété 'disabled' ne sera pas tabulé. Cependant, l'élément avec aria-disabled = "true" pourra toujours recevoir le focus et signaler au lecteur d'écran en grisé.