Accessibilità dei widget di completamento automatico
Applicare aria-autocomplete, aria-expanded, role=listbox e role=option per rendere il widget compatibile con gli screen reader
Accessibilità dei widget di completamento automatico è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Lo schema ARIA combobox
Lo schema combobox WAI-ARIA definisce un insieme specifico di ruoli e proprietà per i widget di autocomplete. Un combobox è un elemento input associato a un popup listbox. Lo schema garantisce che i lettori di schermo annuncino correttamente il comportamento interattivo, le opzioni disponibili e la selezione corrente agli utenti che non possono vedere l'interfaccia visiva.
role=combobox sul wrapper
Racchiuda l'input in un div con role="combobox". In questo modo comunica alle tecnologie assistive che l'input dispone di un popup associato. Imposti aria-expanded={isOpen} su questo wrapper per indicare ai lettori di schermo se l'elenco dei suggerimenti è attualmente visibile o nascosto.
Attributi ARIA dell'input
L'elemento input stesso deve avere: aria-autocomplete="list" (il popup contiene un elenco di suggerimenti), aria-haspopup="listbox" (un clic o la digitazione apre un listbox), aria-expanded={isOpen} e aria-controls="suggestion-list-id", che fa riferimento all'id dell'elemento che contiene l'elenco a discesa.
aria-activedescendant
aria-activedescendant sull'input fa riferimento all'id dell'opzione attualmente evidenziata. Quando selectedIndex è 0, imposti aria-activedescendant="option-0". I lettori di schermo usano questo attributo per annunciare l'elemento attivo senza spostare il focus effettivo dall'input. Quando non è selezionato alcun elemento, rimuova l'attributo oppure lo imposti su una stringa vuota.
L'elenco dei suggerimenti: role=listbox
L'elemento contenitore del dropdown deve avere role="listbox" e un id univoco che corrisponda a aria-controls dell'input. Questo ruolo comunica all'albero dell'accessibilità che l'elemento è un elenco di opzioni selezionabili. Il listbox riceve il focus indirettamente tramite aria-activedescendant sull'input.
Ogni suggerimento: role=option
Ogni elemento suggerito deve avere role="option" e un id univoco, ad esempio option-0, option-1 e così via. Aggiunga aria-selected={index === selectedIndex} per indicare quale elemento è attualmente evidenziato. Quando l'utente si sposta con i tasti freccia, i lettori di schermo annunciano sia il contenuto dell'opzione sia se è selezionata.
Annuncio del lettore di schermo
Quando l'utente preme ArrowDown e aria-activedescendant si aggiorna a option-1, VoiceOver annuncia qualcosa come "hook React, 2 di 5". Il lettore di schermo legge automaticamente il testo dell'opzione e la sua posizione nell'elenco, in base al markup ARIA. Per la navigazione da tastiera non sono necessarie ulteriori regioni live.
Test con VoiceOver e NVDA
Esegua i test con VoiceOver su macOS (Cmd+F5 per attivarlo o disattivarlo) e con NVDA su Windows (download gratuito). Porti il focus sull'input e inizi a digitare. Verifichi che il lettore di schermo annunci il ruolo combobox, il numero di risultati trovati e ogni opzione mentre si sposta con i tasti freccia. Confronti il comportamento con gli esempi della WAI-ARIA Authoring Practices Guide.
Regione live per il caricamento asincrono
Quando i suggerimenti vengono caricati in modo asincrono, aggiunga un div visivamente nascosto con aria-live="polite" e aria-atomic="true". Aggiorni il contenuto testuale quando il caricamento è completato: "5 risultati trovati" oppure "Nessun risultato trovato". Il lettore di schermo annuncia questo messaggio dopo aver terminato il parlato corrente, mantenendo l'utente informato senza interromperlo.
WAI-ARIA Authoring Practices Guide
La WAI-ARIA Authoring Practices Guide (APG), disponibile all'indirizzo w3.org/WAI/ARIA/apg, contiene una pagina dedicata allo schema combobox con esempi di codice funzionanti e specifiche dettagliate sulle interazioni da tastiera. Faccia sempre riferimento all'APG quando implementa widget interattivi come autocomplete, finestre di dialogo o schede, per garantire la piena conformità ai requisiti di accessibilità.
aria-label e placeholder
Fornisca un aria-label sull'input se non esiste un elemento label visibile: aria-label="Search suggestions". Non faccia affidamento esclusivamente su placeholder per le etichette: i placeholder scompaiono quando l'utente digita e non vengono annunciati in modo uniforme da tutti i lettori di schermo. Un elemento label visibile con htmlFor è sempre l'opzione migliore.
Scopo di aria-activedescendant
Qual è lo scopo dell'attributo aria-activedescendant su un input di autocomplete?
Riepilogo della lezione: accessibilità per l'autocomplete
Usi role="combobox" sul wrapper, aria-autocomplete="list" sull'input, nonché aria-expanded, aria-controls e aria-activedescendant per collegare l'input all'elenco dei suggerimenti. Ogni opzione richiede role="option", un id univoco e aria-selected. Aggiunga una regione aria-live per il conteggio asincrono dei risultati.
Domande Frequenti
La lezione «Accessibilità dei widget di completamento automatico» è gratuita?
Sì — il testo completo di «Accessibilità dei widget di completamento automatico» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Accessibilità dei widget di completamento automatico»?
Applicare aria-autocomplete, aria-expanded, role=listbox e role=option per rendere il widget compatibile con gli screen reader Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Accessibilità dei widget di completamento automatico»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Input controllato con lista di suggerimenti
- Navigazione da tastiera nelle liste di suggerimenti
- Suggerimenti asincroni con debounce
- Accessibilità dei widget di completamento automatico