Poziom
A
Od wersji
WCAG 2.0
Pozycje
37 / 193
/ Kryterium WCAG

3.2.2 Podczas wprowadzania danych

Zmiana ustawienia, na przykład wybranie opcji z listy albo zaznaczenie pola, nie może sama z siebie przenosić człowieka gdzie indziej, chyba że został o tym wcześniej uprzedzony.

/ Czego wymaga

Wybranie wartości to nie to samo, co polecenie, żeby coś się stało. Kryterium mówi, że zmiana ustawienia kontrolki, czyli wybranie opcji, zaznaczenie pola wyboru albo wpisanie tekstu, nie może automatycznie powodować zmiany kontekstu. Zmiana kontekstu to poważna zmiana: ładuje się nowa strona, otwiera się nowe okno, fokus przeskakuje w inne miejsce albo treść zostaje przebudowana tak, że strona znaczy coś innego. Osoby, które nie widzą całego ekranu, gubią się, gdy dzieje się to bez zapowiedzi.

Granica przebiega między zmianą wartości a aktywowaniem kontrolki. Naciśnięcie przycisku albo przejście linkiem może zrobić cokolwiek, bo człowiek sam o to poprosił. Zaktualizowanie części strony po dokonaniu wyboru, na przykład pokazanie dodatkowych pól albo przefiltrowanie listy, nie jest zmianą kontekstu, o ile fokus zostaje na miejscu, a strona zachowuje swoje znaczenie. Kryterium zostawia jedno wyjście: takie zachowanie jest dozwolone, jeśli użytkownik został o nim poinformowany, zanim użył kontrolki.

/ Jak strony go nie spełniają

  • Element select ładuje inną stronę od razu po wybraniu opcji i nie ma przycisku, którym można by potwierdzić wybór.
  • Formularz wysyła się sam, gdy wypełnione zostaje ostatnie pole albo zaznaczone pole wyboru.
  • Fokus przeskakuje do następnego pola po wpisaniu ustalonej liczby znaków, na przykład między częściami numeru telefonu, a nic na stronie o tym nie mówi.
  • Zaznaczenie przycisku opcji otwiera nowe okno.
  • Lista wyboru języka lub kraju przeładowuje całą stronę w innej wersji w chwili, gdy zmienia się jej wartość.

/ Jak sprawdzić samodzielnie

  1. Przejdź tabulatorem do każdego elementu select i zmień jego wartość samymi strzałkami. Obserwuj, czy strona przechodzi gdzie indziej, wysyła formularz albo przenosi fokus, zanim naciśniesz Enter.
  2. Zaznacz każde pole wyboru i wybierz każdy przycisk opcji spacją i strzałkami, szukając tych samych trzech rzeczy.
  3. Wpisuj tekst w pola, także te podzielone na kilka okienek, i zanotuj każde miejsce, w którym fokus przenosi się bez naciśnięcia klawisza Tab.
  4. Wyszukaj w źródle obsługę zdarzenia onchange, która wywołuje submit() albo ustawia location, bo to najczęstsza przyczyna.
  5. Tam, gdzie wprowadzanie danych faktycznie powoduje zmianę kontekstu, sprawdź, czy zapowiada ją widoczna instrukcja umieszczona przed kontrolką.

/ Jak to naprawić

  • Dodaj obok elementu select element button typu submit i przechodź na inną stronę przy wysłaniu formularza, a nie przy zdarzeniu change.
  • Usuń wywołania form.submit() z obsługi zdarzeń change i blur i pozwól, żeby użytkownik wysłał formularz przyciskiem.
  • Nowe okna otwieraj tylko z linków i przycisków, nigdy przy zmianie przycisku opcji, pola wyboru ani listy select.
  • Gdy wybór musi zaktualizować stronę, zmieniaj na miejscu treść znajdującą się za kontrolką i zostaw fokus tam, gdzie jest.
  • Jeśli automatyczne zachowanie musi zostać, opisz je w tekście umieszczonym przed kontrolką, żeby został odczytany, zanim użytkownik do niej dotrze.

/ Co sprawdza nasz skaner

Jedyna automatyczna reguła w tym miejscu, H32.2 z HTML_CodeSniffer, zgłasza element form bez przycisku wysyłania: bez input typu submit lub image, bez button, który wysyła formularz, i bez zewnętrznego przycisku powiązanego z nim atrybutem form. To wskazówka, że formularz może wysyłać się przy zmianie wartości, i niczego nie dowodzi. Test nigdy nie obsługuje kontrolek, więc nie wykryje listy select, która przenosi na inną stronę po zmianie wartości.

/ Kto je łamie, według naszych pomiarów

Zmierzone podmioty łamiące to kryterium, najwięcej wystąpień na górze
PodmiotSektorWystąpieniaWynik
Nürnbergcity · DE52
Gliwicecity · PL213
Harris Countygovernment · US219
Phoenixcity · US21
Uniwersytet Łódzkieducation · PL29
Warszawski Uniwersytet Medycznyeducation · PL213
Austincity · US120
Baltimorecity · US17
Bostoncity · US16
Bundesministerium der Finanzengovernment · DE113
Dallascity · US123
Gdańskcity · PL12
Houstoncity · US17
Indianapoliscity · US118
Katowicecity · PL110
King Countygovernment · US115
Krajowa Administracja Skarbowagovernment · PL15
Kölncity · DE116
Las Vegascity · US18
Miami-Dade Countygovernment · US120
Narodowy Instytut Zdrowia Publicznegohealth · PL125
Nashvillecity · US112
New Orleanscity · US17
Państwowa Inspekcja Pracygovernment · PL150
Philadelphiacity · US18
Politechnika Wrocławskaeducation · PL117
Polski Instytut Sztuki Filmowejculture · PL17
Poznańcity · PL11
Radomcity · PL12
Rzeszówcity · PL18
Seattlecity · US112
State of Floridagovernment · US18
State of Pennsylvaniagovernment · US121
Technische Universität Müncheneducation · DE114
Uniwersytet Jagiellońskieducation · PL11
Uniwersytet Warszawskieducation · PL14
Veterans Affairsgovernment · US133

Jedna strona na podmiot, mierzona automatycznie w tygodniowym cyklu. Jeśli podmiot coś naprawił od ostatniego pomiaru, zmiana będzie widoczna przy następnym, a każdy podmiot może odpowiedzieć na swojej stronie.

/ Pytania o to kryterium

Co w WCAG jest zmianą kontekstu?

WCAG definiuje ją jako poważną zmianę, która może zdezorientować osoby niewidzące całej strony naraz: zmianę programu użytkownika, okna widoku (viewport), fokusu albo treści, która zmienia znaczenie strony. Przykłady to otwarcie nowego okna, załadowanie innej strony i przeniesienie fokusu. Sama zmiana treści nie zawsze jest zmianą kontekstu.

Czy lista rozwijana może przenosić na inną stronę po wybraniu opcji?

Nie bez uprzedzenia. Element select, który ładuje nową stronę przy zmianie wartości, nie spełnia tego kryterium, a najbardziej cierpią na tym użytkownicy klawiatury, bo przechodzenie po opcjach strzałkami może wywołać skok już przy pierwszej z nich. Dodaj przycisk, który wykonuje przejście, albo napisz przed kontrolką, że wybranie opcji otwiera nową stronę.

Czy filtrowanie listy po zaznaczeniu pola wyboru narusza to kryterium?

Zwykle nie. Pokazanie dodatkowych pól, zaktualizowanie ceny albo przefiltrowanie wyników pod kontrolką zmienia treść i nie jest zmianą kontekstu, pod warunkiem że fokus zostaje na kontrolce, a strona zachowuje swoje znaczenie. Błędem staje się wtedy, gdy aktualizacja przenosi fokus, podmienia całą stronę albo wysyła formularz. Zapowiadanie takich zmian czytnikom ekranu to temat kryterium 4.1.3 Komunikaty o stanie.