aria-checked
Indica lo stato di selezione corrente di una checkbox, di un radio button o di una voce di menu di tipo check. Accetta i valori "true", "false" o "mixed". La checkbox HTML nativa gestisce questo automaticamente — impostarlo manualmente soltanto su widget personalizzati.
Quando utilizzarlo
Su widget che hanno una semantica di selezione binaria o tri-stata: role="checkbox", role="radio", role="menuitemcheckbox", role="menuitemradio" e role="switch". Se si utilizza l’elemento nativo <input type="checkbox"> o <input type="radio">, il browser espone già lo stato di selezione alla tecnologia assistiva — non è necessario duplicarlo con aria-checked.
Distinzione dagli stati correlati:
aria-checked— per «questa opzione è selezionata da un insieme di scelte, spesso indipendentemente dalle altre». Checkbox e radio button.aria-pressed— per i pulsanti di attivazione (muto / non muto). L’elemento è concettualmente un pulsante; lo stato indica se l’azione è attualmente attiva.aria-selected— per gli elementi all’interno di un contenitore a selezione singola cometablist,listboxotree. Lo stato appartiene al modello di selezione del contenitore, non all’elemento stesso.
Come mantenerlo sincronizzato
I valori validi sono "true", "false", "mixed" e "undefined". Utilizzare "mixed" soltanto su una checkbox padre che riassume un gruppo di checkbox figlie in stati inconsistenti (il classico pattern indeterminate di «seleziona tutto»). "undefined" è raro in pratica; la maggior parte degli autori usa "false" al suo posto.
L’attributo deve riflettere ciò che l’utente vede. Qualunque gestore di click e di tastiera aggiorni il segno di spunta visivo deve anche scrivere il nuovo valore di aria-checked nello stesso percorso di codice. Non impostare mai un aspetto «selezionato» tramite CSS senza aggiornare l’attributo.
Per role="radio" all’interno di un radiogroup, esattamente un’opzione deve avere aria-checked="true" in ogni momento; le altre devono essere "false" (non assenti).
Errori comuni
- Omettere del tutto
aria-checkedsu un elementorole="checkbox"— lo screen reader annuncia «checkbox» senza stato. - Alternare una classe per mostrare il segno di spunta senza mai aggiornare
aria-checked. - Usare
aria-checked="true"su un<input type="checkbox">nativo — il browser lo ignora e lo stato duplicato può andare fuori sincronia. - Impostare
aria-checked="mixed"su una singola checkbox anziché su una padre che riassume i figli. - Lasciare i radio button fratelli privi di
aria-checked="false"— la tecnologia assistiva non può dedurre lo stato non selezionato. - Confondere
aria-checkedconaria-selectedsulle opzioni di listbox o sulle tab.
Esempio
<div role="group" aria-labelledby="prefs-heading">
<h3 id="prefs-heading">Preferenze e-mail</h3>
<div
role="checkbox"
tabindex="0"
aria-checked="false"
onclick="toggle(this)"
onkeydown="if (event.key === ' ') { event.preventDefault(); toggle(this); }"
>
Inviami riepiloghi settimanali
</div>
</div>