Formularze
Układ, walidacja, błędy i wysyłanie — zasady, dzięki którym formularz wypełnia się szybko, a pomylić się w nim trudno.
Formularz to miejsce, w którym produkt prosi ludzi o wysiłek. Każda z poniższych zasad istnieje po to, by ten wysiłek zmniejszyć: mniej decyzji, czytelniejsze błędy, żadnej utraconej pracy.
examples/patterns/signup-form.tsx
Układ
- Jedna kolumna. Formularze wielokolumnowe zaburzają kolejność czytania i ukrywają pola. Wyjątkiem są krótkie, powiązane pary — imię i nazwisko, data ważności i kod CVC.
- Etykiety nad polami. Etykiety umieszczone nad polem najszybciej się przegląda, a dłuższe tłumaczenia i powiększenie ich nie psują. Jako etykiety używaj
FieldLabel, nigdy placeholdera. - Grupuj za pomocą
FieldSet. Powiązane pola mają wspólnyFieldLegend; odstęp między grupami jest większy niż między polami wewnątrz grupy. - Dopasuj szerokość pola do odpowiedzi. Pole na kod pocztowy nie powinno być tak szerokie jak pole na adres.
- Poziome wiersze w ustawieniach. Na stronach ustawień etykieta i opis stoją po lewej, a kontrolka po prawej;
Field orientation="responsive"sprawia, że na wąskich ekranach elementy układają się jeden pod drugim.
examples/patterns/settings-form.tsx
Pola wymagane i opcjonalne
Oznaczaj mniejszość. Większość formularzy powinna prosić tylko o to, co niezbędne — wtedy nieliczne pola opcjonalne opisz dopiskiem „(opcjonalnie)”, a wymaganych nie oznaczaj wcale. Gdy większość pól jest opcjonalna, oznacz za to pola wymagane. Nigdy nie polegaj na samej gwiazdce: wielu osobom i czytnikom ekranu nic ona nie mówi.
Walidacja
Kiedy walidować
- Przy wysyłaniu sprawdź wszystko i przenieś fokus do podsumowania błędów na górze formularza.
- Po pierwszym wysłaniu sprawdzaj pole ponownie, gdy ktoś je opuszcza (
blur), żeby błędy znikały, gdy tylko zostaną poprawione. - Nigdy przy każdym naciśnięciu klawisza przed pierwszym wysłaniem — komunikat, że adres e-mail jest nieprawidłowy, już po wpisaniu jednej litery jest wręcz wrogi.
Jak pokazywać błędy
- Umieść komunikat bezpośrednio pod polem za pomocą
FieldError, który wyświetla ikonę i tekst — nigdy sam kolor. - Oznacz kontrolkę atrybutem
aria-invalid, a pole —data-invalid. - Napisz, co jest nie tak i jak to naprawić: Wpisz adres e-mail, np. ada@acme.co, a nie Nieprawidłowe dane.
- W formularzach dłuższych niż jeden ekran dodaj podsumowanie w
Alert, które wymienia problemy i otrzymuje fokus.
<Field data-invalid>
<FieldLabel htmlFor="email">Work email</FieldLabel>
<Input id="email" aria-invalid />
<FieldError>Enter an email address like ada@acme.co.</FieldError>
</Field>Wysyłanie
- Nie wyłączaj przycisku wysyłania. Wyłączony przycisk nie wyjaśni, czego brakuje; próba wysłania i pokazanie błędów — owszem.
- Pokazuj postęp na przycisku za pomocą
loading. Przycisk zachowuje szerokość i fokus, a przy tym blokuje podwójne wysłanie. - Potwierdzaj powodzenie powiadomieniem, jeśli ktoś zostaje na stronie, albo od razu przejdź do wyniku.
- Nigdy nie czyść formularza po błędzie. Błędy serwera pokazuj przy polach albo w podsumowaniu, a wszystkie wpisane wartości zachowaj.
Dopisz końcówkę domeny, na przykład .com.
Dobrze.Konkretna wskazówka tuż przy polu, z ikoną.
Źle.Samo czerwone obramowanie zawodzi osoby, które nie widzą koloru — i niczego nie wyjaśnia.
Lista kontrolna dostępności
- Każda kontrolka ma etykietę dostępną programowo (
htmlFor+idalboaria-labelw kontrolkach z samą ikoną). - Tekst pomocniczy jest powiązany przez
aria-describedby; błędy są odczytywane przez czytniki ekranu (FieldErrorużywarole="alert"). - Pola z danymi osobowymi mają ustawione atrybuty
autocomplete(name,email,new-password), żeby przeglądarki i menedżery haseł mogły pomóc w ich wypełnieniu. - Formularz da się w pełni obsłużyć klawiaturą — w logicznej kolejności i z widocznym fokusem.