Jak budować formularze w HTML zgodne z EAA, WCAG ?

Dostępność cyfrowa (ang. digital accessibility) oraz European Accessibility Act (EAA) określają zasady dotyczące tworzenia stron internetowych i aplikacji, tak aby były one dostępne dla wszystkich użytkowników, w tym osób z niepełnosprawnościami. Jednym z kluczowych elementów dostępności jest odpowiednie projektowanie formularzy w HTML.

Używaj semantycznych elementów HTML

Formularze powinny być zbudowane przy użyciu odpowiednich znaczników:

<form action="submit.php" method="post">
  <label for="name">Imię:</label>
  <input type="text" id="name" name="name" required>
</form>

Unikaj divów do budowy formularzy – zamiast tego używaj <form>, <label>, <input>, <select>, <textarea>.

Zawsze stosuj etykiety (<label>)

Każde pole powinno mieć powiązaną etykietę:

<label for="email">Adres e-mail:</label>
<input type="email" id="email" name="email" required>

Tekst etykiety powinien być jednoznaczny i opisowy.

Grupowanie pól (fieldset, legend)

Jeśli formularz zawiera grupę pól, stosuj <fieldset> i <legend>

<fieldset>
  <legend>Dane kontaktowe</legend>
  <label for="phone">Telefon:</label>
  <input type="tel" id="phone" name="phone">
</fieldset>

Opisy i podpowiedzi (aria-describedby)

W przypadku dodatkowych wskazówek dla użytkownika:

<label for="password">Hasło:</label>
<input type="password" id="password" name="password" aria-describedby="passwordHelp">
<small id="passwordHelp">Hasło powinno mieć min. 8 znaków.</small>

Obsługa błędów i walidacja

Native HTML5:

<input type="email" id="email" name="email" required>

Obsługa błędów z dostępnością:

<div role="alert" id="error-message" style="color: red;">  
Wprowadź poprawny adres e-mail.
</div>
<input type="email" id="email" name="email" aria-describedby="error-message" required>

Nawigacja i klawiatura

Formularze powinny być obsługiwane klawiaturą (tab, enter).

Kolejność pól powinna być logiczna (sprawdź używając tab).

Kontrast i widoczność

Minimalny kontrast tekstu etykiety do tła: 4.5:1.

Wyróżnij focus na elementach formularza (np. :focus).

ARIA dla bardziej skomplikowanych formularzy

aria-required=”true” dla obowiązkowych pól (jeśli nie można użyć required).

aria-invalid=”true” dla błędów walidacji.

Przykładowy poprawny formularz:

<form action="#" method="post">
  <fieldset>
    <legend>Dane osobowe</legend>
    <label for="name">Imię i nazwisko:</label>
    <input type="text" id="name" name="name" required>
    <label for="email">E-mail:</label>
    <input type="email" id="email" name="email" aria-describedby="emailHelp" required>
    <small id="emailHelp">Podaj poprawny adres e-mail.</small>
    <button type="submit">Wyślij</button>
  </fieldset>
</form>

Dzięki tym zasadom formularze będą zgodne z EAA, WCAG i będą dostępne dla wszystkich użytkowników.

F.A.Q. dla Jak budować formularze w HTML zgodne z EAA, WCAG ?


Czym jest Europejski Akt o Dostępności (EAA)?

Europejski Akt o Dostępności (EAA) to dyrektywa Unii Europejskiej mająca na celu zapewnienie, że produkty i usługi, w tym strony internetowe i aplikacje mobilne, są dostępne dla wszystkich obywateli, w tym osób z niepełnosprawnościami. W Polsce przepisy te wejdą w życie 28 czerwca 2025 roku. :


Co to jest WCAG 2.1?

WCAG 2.1 (Web Content Accessibility Guidelines) to zestaw wytycznych opracowanych przez W3C, które określają, jak tworzyć treści internetowe dostępne dla osób z różnymi niepełnosprawnościami. Wytyczne te są podzielone na trzy poziomy zgodności: A, AA i AAA, gdzie poziom AA jest często wymaganym standardem.


Dlaczego dostępność formularzy w HTML jest ważna?

Dostępne formularze w HTML umożliwiają wszystkim użytkownikom, w tym osobom z niepełnosprawnościami, łatwe i intuicyjne wypełnianie oraz przesyłanie danych. Poprawa dostępności formularzy zwiększa użyteczność strony i może być wymagana przez przepisy prawne, takie jak EAA.


Jakie są kluczowe zasady budowania dostępnych formularzy zgodnych z WCAG 2.1?

Aby formularze były dostępne i zgodne z WCAG 2.1, należy: - **Używać odpowiednich znaczników HTML**: Stosuj semantyczne elementy, takie jak `label` dla etykiet pól i `fieldset` oraz `legend` dla grupowania powiązanych pól. - **Zapewnić widoczne i powiązane etykiety**: Każde pole formularza powinno mieć etykietę powiązaną za pomocą atrybutu `for`, co ułatwia nawigację dla użytkowników korzystających z czytników ekranu. - **Dbać o odpowiedni kontrast kolorów**: Tekst i elementy formularza powinny mieć wystarczający kontrast w stosunku do tła, aby były czytelne dla osób słabowidzących. - **Zapewnić nawigację klawiaturą**: Formularze powinny być w pełni obsługiwane za pomocą klawiatury, z logiczną kolejnością fokusu. - **Dostarczyć informacje zwrotne**: Po przesłaniu formularza użytkownik powinien otrzymać jasne informacje o sukcesie lub błędach, z instrukcjami, jak je poprawić.


Jakie są konsekwencje nieprzestrzegania wytycznych EAA i WCAG 2.1?

Nieprzestrzeganie wytycznych EAA i WCAG 2.1 może skutkować sankcjami finansowymi oraz utratą reputacji firmy. Ponadto, niedostępność cyfrowa ogranicza grono potencjalnych klientów, co może wpływać na wyniki biznesowe.


Jak sprawdzić, czy formularz jest zgodny z WCAG 2.1?

Aby sprawdzić zgodność formularza z WCAG 2.1, można skorzystać z narzędzi takich jak Axe, Lighthouse czy WAVE, które analizują stronę pod kątem dostępności i wskazują obszary wymagające poprawy. :