Krótko
Jeśli formularz pyta o typowe dane użytkownika, kod powinien jasno wskazywać cel pola, na przykład `given-name`, `email` albo `postal-code`.
Postrzegalność · Poziom AA
Cel typowych pól formularzy, takich jak imię, e-mail albo adres, musi być określony w kodzie, żeby przeglądarki i technologie wspomagające mogły oferować wsparcie, na przykład autouzupełnianie.
Jeśli formularz pyta o typowe dane użytkownika, kod powinien jasno wskazywać cel pola, na przykład `given-name`, `email` albo `postal-code`.
Formularz ma widoczne etykiety: „Imię”, „Nazwisko”, „E-mail”, „Telefon”, „Ulica” i „Kod pocztowy”. Osoba widząca rozumie, co wpisać, ale przeglądarka i technologie wspomagające nie dostają informacji, że to są konkretne dane o użytkowniku.
Wtedy autouzupełnianie może podpowiadać niewłaściwe dane, nie podpowiadać nic albo zgadywać na podstawie etykiety. Dla użytkownika oznacza to więcej pisania, większe ryzyko pomyłki i trudniejszy formularz.
To kryterium nie mówi, że każde pole formularza musi mieć `autocomplete`. Dotyczy pól, które zbierają dane o użytkowniku i których cel znajduje się w rozpoznawanej liście celów danych wejściowych.
Dobry formularz ma widoczne etykiety i poprawne wartości `autocomplete`. Etykieta mówi użytkownikowi, co wpisać. `autocomplete` mówi przeglądarce i technologiom wspomagającym, jaki jest programowy cel pola.
Zły wzorzec zostawia cel pola do zgadywania albo podaje cel błędnie. Formularz może wyglądać poprawnie, ale kod nie przekazuje właściwej informacji.
Kod — HTML
<form>
<label for="first-name">
Imię
</label>
<input
id="first-name"
name="first-name"
type="text"
autocomplete="given-name"
>
<label for="last-name">
Nazwisko
</label>
<input
id="last-name"
name="last-name"
type="text"
autocomplete="family-name"
>
<label for="contact-email">
Adres e-mail
</label>
<input
id="contact-email"
name="contact-email"
type="email"
autocomplete="email"
>
<label for="contact-phone">
Telefon
</label>
<input
id="contact-phone"
name="contact-phone"
type="tel"
autocomplete="tel"
>
</form>
Ten przykład ma widoczne etykiety i poprawnie wskazany cel pól. `type="email"` i `type="tel"` opisują rodzaj danych, a `autocomplete` wskazuje, że chodzi o e-mail i telefon użytkownika.
Kod — HTML
<form>
<label for="address">
Ulica i numer
</label>
<textarea
id="address"
name="address"
autocomplete="street-address"
></textarea>
<label for="city">
Miejscowość
</label>
<input
id="city"
name="city"
type="text"
autocomplete="address-level2"
>
<label for="postal-code">
Kod pocztowy
</label>
<input
id="postal-code"
name="postal-code"
type="text"
autocomplete="postal-code"
>
<label for="country">
Kraj
</label>
<input
id="country"
name="country"
type="text"
autocomplete="country-name"
>
</form>
Adres użytkownika ma wartości z listy rozpoznawanych celów. W polskich formularzach `address-level2` najczęściej odpowiada miejscowości.
Kod — HTML
<form>
<label for="name">
Imię
</label>
<input
id="name"
name="name"
type="text"
autocomplete="name"
>
<label for="email">
Adres e-mail
</label>
<input
id="email"
name="email"
type="email"
autocomplete="user-email"
>
</form>
To zły przykład. Pole imienia używa zbyt ogólnej wartości `name`, a `user-email` jest wymyśloną wartością, której przeglądarka nie rozpozna jako celu z ustalonej listy.
Kod — HTML
<fieldset>
<legend>Adres dostawy</legend>
<label for="shipping-street">
Ulica i numer
</label>
<textarea
id="shipping-street"
name="shipping-street"
autocomplete="shipping street-address"
></textarea>
<label for="shipping-postal-code">
Kod pocztowy
</label>
<input
id="shipping-postal-code"
name="shipping-postal-code"
type="text"
autocomplete="shipping postal-code"
>
</fieldset>
<fieldset>
<legend>Adres rozliczeniowy</legend>
<label for="billing-street">
Ulica i numer
</label>
<textarea
id="billing-street"
name="billing-street"
autocomplete="billing street-address"
></textarea>
<label for="billing-postal-code">
Kod pocztowy
</label>
<input
id="billing-postal-code"
name="billing-postal-code"
type="text"
autocomplete="billing postal-code"
>
</fieldset>
Tokeny `shipping` i `billing` pomagają rozróżnić adres dostawy i adres rozliczeniowy. To ma sens tylko wtedy, gdy formularz rzeczywiście zbiera oba rodzaje danych.
Etykieta jest widoczna, ale kod nie mówi, jaki jest cel pola.
Przeglądarka i narzędzia wspomagające muszą zgadywać.
Cel jest zbyt ogólny albo wartość jest wymyślona.
Pole wygląda dobrze, ale programowo nadal jest nieprecyzyjne.
Widoczna etykieta i programowy cel pola działają razem.
Autouzupełnianie i technologie wspomagające mają jasny sygnał.