Etichette dei moduli
Una casella di testo accanto alla parola «Email» non ha un'etichetta finché l'elemento label non le viene collegato; fino ad allora un lettore di schermo può dire soltanto «campo di modifica».
Ogni campo ha bisogno di un nome
Quando il focus arriva su un campo di un modulo, il lettore di schermo ne annuncia l'etichetta, il tipo e lo stato: «Email, campo di modifica, obbligatorio». L'etichetta viene da un elemento label collegato al campo. Ci sono due modi per collegarli. Dai all'input un id e alla label un for con lo stesso valore, oppure metti l'input dentro la label. In entrambi i casi, un clic sul testo dell'etichetta porta il focus nel campo, e così caselle di controllo e pulsanti di opzione piccoli diventano molto più facili da colpire.
<label for="email">Email</label> <input id="email" type="email" autocomplete="email"> <label> <input type="checkbox" name="news"> Send me the weekly menu </label>
Il criterio di successo 3.3.2 Etichette o istruzioni delle WCAG 2.2, di livello A, chiede etichette o istruzioni ogni volta che un contenuto richiede un input dell'utente. Il criterio 1.3.1 Informazioni e correlazioni chiede che il legame tra etichetta e campo esista nel codice, non solo sullo schermo. Un paragrafo che si trova sopra un input gli è vicino solo a vista; niente dice alle tecnologie assistive che i due vanno insieme.
Il segnaposto non è un'etichetta
L'attributo placeholder mostra un testo grigio di suggerimento dentro un campo vuoto. Viene voglia di usarlo al posto dell'etichetta, e molti moduli di registrazione lo fanno. Il problema è che sparisce appena scrivi, quindi non puoi più controllare a che cosa serviva il campo, e di solito è così chiaro da non rispettare le regole sul contrasto dell'unità precedente. Usa un'etichetta visibile e, se vuoi, anche un placeholder con un valore di esempio.
Gruppi, scopo ed errori
Anche i pulsanti di opzione e le caselle di controllo collegate tra loro hanno bisogno di un'etichetta di gruppo. Racchiudili in un fieldset e metti la domanda nel suo legend: così il lettore di schermo dice «Size, gruppo» prima di «Small, pulsante di opzione, 1 di 3». Per i dati personali, l'attributo autocomplete dice al browser a che cosa serve un campo, con nomi presi dallo standard HTML come name, email, tel, new-password e one-time-code. Il criterio 1.3.5 Identificare lo scopo degli input, di livello AA, chiede proprio questo, perché permette ai browser di compilare i campi e ad alcuni strumenti di mostrare accanto icone familiari.
Quando qualcosa va storto, dillo a parole. Il criterio 3.3.1 Identificazione di errori chiede che un errore di inserimento venga individuato e descritto all'utente con un testo, non solo colorando di rosso il bordo. Le WCAG 2.2 hanno aggiunto anche il 3.3.7 Inserimento ridondante: le informazioni che una persona ha già inserito nello stesso processo vanno compilate di nuovo al suo posto o offerte da selezionare, invece di farle scrivere due volte. Infine il 3.3.8 Autenticazione accessibile (minimo), di livello AA, dice che un passaggio di accesso non deve dipendere dal ricordare o dal ricopiare qualcosa, a meno che non ci sia un aiuto; lasciare che i gestori di password compilino il campo e permettere di incollare valgono entrambi come aiuto.
Di' che cosa serve prima che si cominci
Le istruzioni vanno prima dei campi a cui si riferiscono, non in un messaggio di errore dopo che qualcuno ha sbagliato. Se una password deve avere almeno 15 caratteri, scrivilo accanto all'etichetta. Segna i campi obbligatori nel testo dell'etichetta, per esempio con la parola «obbligatorio», e aggiungi l'attributo required perché anche il browser lo annunci. Quando compare un messaggio di errore, tienilo accanto al suo campo e collega i due con aria-describedby, che punta all'id del messaggio: il lettore di schermo leggerà il messaggio quando il campo riceve il focus. Infine sposta il focus sul primo campo con un problema, o su un riepilogo degli errori in cima, così chi usa la tastiera non resta in fondo a un modulo lungo a chiedersi che cosa sia successo.
| label for="x" | Collega la label al campo con id="x" |
| WCAG 3.3.2 | Etichette o istruzioni (A) |
| WCAG 1.3.5 | Identificare lo scopo degli input (AA): autocomplete |
| fieldset + legend | Etichetta di gruppo per pulsanti di opzione e caselle di controllo |
| WCAG 3.3.7 | Inserimento ridondante (A), novità delle 2.2 |
| WCAG 3.3.8 | Autenticazione accessibile (minimo), AA: permettere di incollare e i gestori di password |
- Collega ogni campo a una label con for e id, oppure mettendolo dentro.
- Il segnaposto sparisce ed è spesso troppo chiaro: non è un'etichetta.
- Raggruppa i pulsanti di opzione con fieldset e legend; usa autocomplete per i dati personali.
- Descrivi gli errori con un testo; per accedere non far riscrivere né memorizzare niente.
- Quale attributo della label punta all'id del suo input?
- Perché un placeholder non basta come etichetta?
- Sparisce quando scrivi ed è spesso troppo chiaro
- I browser lo ignorano
- Non è permesso in HTML
- Funziona solo sui telefoni
- Che cos'altro succede quando una label è collegata a una casella di controllo?
- Un clic sul testo dell'etichetta spunta la casella
- La casella diventa più grande
- Il modulo viene inviato
- Nient'altro
- Quali elementi danno la domanda a un gruppo di pulsanti di opzione?
- fieldset e legend
- div e span
- form e button
- ul e li
- Quale valore di autocomplete deve usare un campo email?
- Quale criterio chiede che i campi per i dati personali identifichino il loro scopo?
- 1.3.5 Identificare lo scopo degli input
- 1.1.1 Contenuti non testuali
- 2.4.7 Focus visibile
- 1.4.1 Uso del colore
- Un errore è segnalato solo da un bordo rosso. Che cosa manca?
- Una descrizione dell'errore a parole
- Un rosso più acceso
- Un suono
- Un bordo più spesso
- Un modulo di accesso blocca l'incolla nel campo della password. Contro quale criterio delle WCAG 2.2 va?
- 3.3.8 Autenticazione accessibile (minimo)
- 2.4.6 Intestazioni ed etichette
- 1.4.3 Contrasto (minimo)
- 2.5.8 Dimensione dell'obiettivo (minimo)
- Un checkout chiede di nuovo l'indirizzo di consegna al passaggio successivo. Quale criterio aiuta?
- 3.3.7 Inserimento ridondante
- 2.1.1 Tastiera
- 1.3.1 Informazioni e correlazioni
- 2.4.3 Ordine del focus
- Quale campo è etichettato correttamente?
City
Fonti di questo corso (9)
- W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
- W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
- W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
- W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
- MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
- MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
- MDN, autocomplete attribute (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete, checked 2026-10-17)
- Every code exercise was checked with a Playwright probe against a reference solution.
Consultato il: 2026-10-17