- Poziom
- A
- Od wersji
- WCAG 2.0
- Pozycje
- 37 / 193
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
- 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.
- Zaznacz każde pole wyboru i wybierz każdy przycisk opcji spacją i strzałkami, szukając tych samych trzech rzeczy.
- 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.
- Wyszukaj w źródle obsługę zdarzenia onchange, która wywołuje submit() albo ustawia location, bo to najczęstsza przyczyna.
- 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
| Podmiot | Sektor | Wystąpienia | Wynik |
|---|---|---|---|
| Nürnberg | city · DE | 5 | 2 |
| Gliwice | city · PL | 2 | 13 |
| Harris County | government · US | 2 | 19 |
| Phoenix | city · US | 2 | 1 |
| Uniwersytet Łódzki | education · PL | 2 | 9 |
| Warszawski Uniwersytet Medyczny | education · PL | 2 | 13 |
| Austin | city · US | 1 | 20 |
| Baltimore | city · US | 1 | 7 |
| Boston | city · US | 1 | 6 |
| Bundesministerium der Finanzen | government · DE | 1 | 13 |
| Dallas | city · US | 1 | 23 |
| Gdańsk | city · PL | 1 | 2 |
| Houston | city · US | 1 | 7 |
| Indianapolis | city · US | 1 | 18 |
| Katowice | city · PL | 1 | 10 |
| King County | government · US | 1 | 15 |
| Krajowa Administracja Skarbowa | government · PL | 1 | 5 |
| Köln | city · DE | 1 | 16 |
| Las Vegas | city · US | 1 | 8 |
| Miami-Dade County | government · US | 1 | 20 |
| Narodowy Instytut Zdrowia Publicznego | health · PL | 1 | 25 |
| Nashville | city · US | 1 | 12 |
| New Orleans | city · US | 1 | 7 |
| Państwowa Inspekcja Pracy | government · PL | 1 | 50 |
| Philadelphia | city · US | 1 | 8 |
| Politechnika Wrocławska | education · PL | 1 | 17 |
| Polski Instytut Sztuki Filmowej | culture · PL | 1 | 7 |
| Poznań | city · PL | 1 | 1 |
| Radom | city · PL | 1 | 2 |
| Rzeszów | city · PL | 1 | 8 |
| Seattle | city · US | 1 | 12 |
| State of Florida | government · US | 1 | 8 |
| State of Pennsylvania | government · US | 1 | 21 |
| Technische Universität München | education · DE | 1 | 14 |
| Uniwersytet Jagielloński | education · PL | 1 | 1 |
| Uniwersytet Warszawski | education · PL | 1 | 4 |
| Veterans Affairs | government · US | 1 | 33 |
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.
