I form di contatto rappresentano il canale di comunicazione principale tra gli utenti e un'applicazione web. Una validazione dei dati mal progettata o inaccessibile è una delle cause primarie di frustrazione per l'utente, portando spesso all'abbandono della compilazione. Per questo motivo, una corretta implementazione deve combinare la validazione lato client (per un feedback immediato) con una struttura HTML robusta che rispetti le linee guida sull'accessibilità (WCAG).
Il nostro form utilizza etichette esplicite tramite il tag <label> collegate direttamente ai rispettivi campi di input tramite l'attributo for. Questo garantisce che, cliccando sull'etichetta, il focus venga trasferito al campo di testo e che gli screen reader leggano correttamente il nome del campo quando l'utente vi naviga. La validazione in tempo reale controlla la correttezza del formato (ad esempio per l'email) o la lunghezza minima dei testi al momento della digitazione o della perdita del focus (evento blur).
La gestione degli errori è l'aspetto più critico: quando un campo non è valido, l'attributo aria-invalid viene impostato su true e l'ID del messaggio di errore specifico viene associato al campo tramite aria-describedby. In questo modo, l'utente che utilizza uno screen reader riceve immediatamente la lettura dell'errore non appena si sposta sul campo interessato. Infine, lo stato di invio e il messaggio di successo finale vengono inseriti in un contenitore con l'attributo role="status" o aria-live="polite", garantendo che l'esito dell'operazione venga annunciato all'utente senza bisogno di ricaricare la pagina o spostare forzatamente il focus.