aria-autocomplete
Su un textbox o combobox, dichiara che tipo di completamento automatico offre il controllo — suggerimenti inline, un elenco di opzioni, entrambi o nessuno. È distinto dall'attributo HTML autocomplete, che riguarda la semantica dei campi modulo per il browser.
Quando usarlo
Su un role="combobox" o role="textbox" personalizzato che offre suggerimenti mentre l’utente digita. L’attributo comunica alla tecnologia assistiva che tipo di completamento automatico attendersi, così l’utente può anticipare se cercarlo nell’input stesso, in un elenco popup, o in entrambi.
Non va applicato a un <input type="text"> nativo ordinario privo di meccanismo di suggerimento — non c’è nulla da annunciare.
Questo attributo viene spesso confuso con l’attributo HTML autocomplete. Sono cose distinte. L’HTML autocomplete ("email", "current-password", "street-address", …) indica al browser come compilare il campo. aria-autocomplete indica alla tecnologia assistiva il pattern di interfaccia implementato dallo sviluppatore. Entrambi possono comparire sullo stesso input senza conflitti.
Come si comporta
Accetta quattro valori token:
"none"— valore predefinito. Il textbox non effettua completamento automatico. Di solito non è necessario impostarlo esplicitamente."inline"— mentre l’utente digita, il testo suggerito viene aggiunto direttamente all’input, in genere selezionato affinché la pressione successiva del tasto lo sovrascriva."list"— i suggerimenti appaiono in un popup separato (di solito unrole="listbox"). Il valore dell’input non cambia automaticamente."both"— entrambi contemporaneamente: l’elenco popup è visibile e il primo suggerimento viene inserito inline nell’input.
Si utilizzi il valore che corrisponde a ciò che l’implementazione fa effettivamente. Se il combobox mostra un menu a discesa di opzioni ma non modifica l’input mentre l’utente digita, si tratta di "list", non di "both".
Errori comuni
- Confonderlo con l’attributo HTML
autocomplete. Hanno un aspetto simile, svolgono funzioni diverse e di solito occorrono entrambi. - Impostare
aria-autocomplete="list"senza impostare anchearia-controlsper puntare al listbox earia-expandedper tenere traccia dello stato aperto/chiuso. - Impostare
aria-autocomplete="both"quando l’input non compila mai automaticamente. L’utente percepisce l’affordance e attende un suggerimento inline che non arriva mai. - Applicare
aria-autocompletea un controllo che non è un textbox o un combobox — ad esempio, un pulsante. L’attributo viene ignorato. - Dimenticare di gestire
aria-activedescendantper l’opzione evidenziata nell’elenco. L’utente capisce che esistono suggerimenti ma non può sapere quale sia attualmente attivo. - Codificare in modo rigido
aria-autocomplete="list"senza verificare l’output dello screen reader. Molte tecnologie assistive hanno pattern di annuncio non uniformi, e il token errato produce formulazioni confuse.
Esempio
<label for="city">Città</label>
<input
id="city"
role="combobox"
type="text"
autocomplete="address-level2"
aria-autocomplete="list"
aria-controls="city-listbox"
aria-expanded="true"
aria-activedescendant="city-opt-3"
>
<ul id="city-listbox" role="listbox">
<li id="city-opt-1" role="option">Bologna</li>
<li id="city-opt-2" role="option">Brescia</li>
<li id="city-opt-3" role="option">Bari</li>
</ul>