aria-autocomplete
Na polu tekstowym lub comboboxie deklaruje rodzaj autouzupełniania oferowanego przez formant — sugestie wbudowane, lista opcji, obie lub żadna. Różni się od atrybutu HTML autocomplete, który dotyczy semantyki pól formularza dla przeglądarki.
Kiedy używać
Na własnym role="combobox" lub role="textbox", który oferuje sugestie podczas wpisywania przez użytkownika. Atrybut informuje technologię asystującą, jakiego rodzaju zachowania autouzupełniania oczekiwać, by użytkownik mógł przewidzieć, czy szukać w samym polu, w wyskakującej liście, czy w obu.
Nie umieszczaj go na zwykłym natywnym <input type="text"> bez mechanizmu sugestii — nie ma nic do ogłoszenia.
Ten atrybut jest często mylony z atrybutem HTML autocomplete. Są one niezwiązane ze sobą. HTML autocomplete ("email", "current-password", "street-address", …) mówi przeglądarce, jak wypełnić pole. aria-autocomplete mówi technologii asystującej, jaki wzorzec interfejsu zaimplementował deweloper. Oba mogą pojawić się na tym samym polu i nie kolidują ze sobą.
Jak działa
Przyjmuje cztery wartości tokenów:
"none"— wartość domyślna. Pole tekstowe nie autouzupełnia. Zazwyczaj nie musisz tego ustawiać jawnie."inline"— podczas wpisywania przez użytkownika sugerowany tekst jest dołączany do samego pola, zazwyczaj zaznaczony, by następne naciśnięcie klawisza mogło go zastąpić."list"— sugestie pojawiają się w osobnym wyskakującym oknie (zazwyczajrole="listbox"). Wartość pola nie zmienia się automatycznie."both"— oba jednocześnie: widoczna jest lista wyskakującego okna i najlepsza sugestia jest wbudowana w pole.
Użyj wartości odpowiadającej temu, co Twoja implementacja faktycznie robi. Jeśli combobox pokazuje listę rozwijaną opcji, lecz nie modyfikuje pola podczas wpisywania, to jest "list", a nie "both".
Częste błędy
- Mylenie z atrybutem HTML
autocomplete. Wyglądają podobnie, robią różne rzeczy i zazwyczaj potrzebne są oba. - Ustawianie
aria-autocomplete="list"bez ustawianiaaria-controlswskazującego listbox iaria-expandedśledzącego otwarty/zamknięty stan. - Ustawianie
aria-autocomplete="both", gdy pole nigdy nie autouzupełnia. Użytkownik słyszy dostępność i czeka na wbudowaną sugestię, która nigdy nie pojawia się. - Umieszczanie
aria-autocompletena formancie, który nie jest polem tekstowym ani comboboxem — na przykład na przycisku. Atrybut jest ignorowany. - Zapomnienie o zarządzaniu
aria-activedescendantdla podświetlonej opcji na liście. Użytkownik słyszy, że istnieją sugestie, lecz nie może stwierdzić, która jest aktualnie aktywna. - Twarde kodowanie
aria-autocomplete="list"bez sprawdzania wyników w czytniku ekranu. Wiele technologii asystujących ma niespójne wzorce ogłoszeń, a zły token produkuje mylące sformułowania.
Przykład
<label for="city">Miasto</label>
<input
id="city"
role="combobox"
type="text"
autocomplete="address-level2"
aria-autocomplete="list"
aria-controls="city-listbox"
aria-expanded="true"
aria-activedescendant="city-opt-3"
>
<ul id="city-listbox" role="listbox">
<li id="city-opt-1" role="option">Bristol</li>
<li id="city-opt-2" role="option">Birmingham</li>
<li id="city-opt-3" role="option">Brighton</li>
</ul>