Formularele concentrează cele mai multe criterii WCAG pe metru pătrat de interfață: etichete (3.3.2), identificarea erorilor (3.3.1), sugestii de corectare (3.3.3), autocomplete (1.3.5), prevenirea erorilor la acțiuni importante (3.3.4). Și pe bună dreptate — un formular inaccesibil înseamnă o comandă pierdută, o cerere nedepusă, un cetățean care trebuie să meargă fizic la ghișeu.
Eticheta vizibilă, legată programatic
Fiecare câmp are nevoie de un <label> legat prin for/id. Placeholder-ul nu este etichetă: dispare când scrii, are contrast slab și multe cititoare de ecran îl tratează inconsistent. Pattern-ul corect e banal: etichetă vizibilă deasupra câmpului, placeholder doar pentru exemple de format („ex.: 0722 123 456").
Erorile: text, nu doar culoare
Chenarul roșu nu ajunge — criteriul 1.4.1 interzice transmiterea informației doar prin culoare. Eroarea corectă: un mesaj text lângă câmp, care spune ce e greșit și cum se corectează („Adresa de e-mail trebuie să conțină @"), legat de câmp prin aria-describedby, cu focusul mutat pe primul câmp cu eroare la submit. Pentru formulare lungi, un rezumat al erorilor în partea de sus, cu linkuri către câmpuri, scutește utilizatorul de vânătoare.
Autocomplete: criteriul ignorat
Criteriul 1.3.5 cere atribute autocomplete pe câmpurile care colectează date despre utilizator: name, email, tel, street-address. Pentru persoanele cu dizabilități cognitive sau motorii, completarea automată din browser elimină exact pasul cel mai greu. Bonus direct: checkout mai rapid pentru toți, deci conversie mai bună.
CAPTCHA, punctul nevralgic
CAPTCHA-urile vizuale clasice exclud utilizatori întregi. Alternativele moderne — verificări invizibile bazate pe comportament, honeypot-uri, limite de rată — opresc boții fără să blocheze oamenii. Dacă păstrezi un CAPTCHA, oferă cel puțin o alternativă audio și asigură-te că procesul nu depinde exclusiv de un test cognitiv (cerință întărită de criteriul 3.3.8 din WCAG 2.2).