Pomóż użytkownikom wpisywać właściwe dane w formularzach

Przeglądarki mają wbudowaną funkcję weryfikacji, która umożliwia sprawdzanie, czy dane wpisywane przez użytkowników są w prawidłowym formacie. Te funkcje możesz aktywować, używając odpowiednich elementów i atrybutów. Ponadto możesz ulepszyć weryfikację formularza za pomocą arkuszy CSS i JavaScript.

Dlaczego warto weryfikować formularze?

W poprzednim module omówiliśmy, jak pomóc użytkownikom uniknąć konieczności ciągłego wykonywania tych samych czynności ponownie wpisać informacje w formularzach. Jak możesz pomóc użytkownikom w przesyłaniu prawidłowych danych?

Wypełnianie formularza bez wiedzy o wymaganych polach jest irytujące. lub ograniczeń tych pól. Na przykład wpisujesz nazwę użytkownika i przesyłasz formularz – okaże się, że nazwa użytkownika musi mieć co najmniej osiem znaków.

Aby pomóc użytkownikom, zdefiniuj reguły weryfikacji i poinformuj o nich.

Zapobieganie przypadkowemu pomijaniu wymaganych pól

Możesz użyć kodu HTML, aby określić właściwy format i ograniczenia dla danych wpisywanych w formularzach. Musisz też określić, które pola są obowiązkowe.

Spróbuj przesłać ten formularz bez wprowadzania danych. Czy do <input> widzisz komunikat o błędzie informujący, że to pole jest wymagane?

Przyczyną jest atrybut required.

<label for="name">Name (required)</label>
<input required type="text" id="name" name="name">

Wiesz już, że możesz używać znacznie więcej typów, na przykład type="email". Przyjrzyjmy się wymaganemu adresowi e-mail <input>.

Spróbuj przesłać ten formularz bez wprowadzania danych. Czy są jakieś różnice w stosunku do wcześniejszej wersji demonstracyjnej? Teraz wpisz swoje imię i nazwisko w polu adresu e-mail i spróbuj przesłać zgłoszenie. Wyświetlany jest inny komunikat o błędzie. Jak to możliwe? Otrzymujesz inną wiadomość, ponieważ wpisana wartość nie jest prawidłowym adresem e-mail.

Atrybut required informuje przeglądarkę, że to pole jest obowiązkowe. Przeglądarka sprawdza też, czy wpisane dane są zgodne z formatem elementu type. Pole adresu e-mail widoczne w przykładzie jest prawidłowe tylko wtedy, gdy nie jest puste, a wpisane dane są prawidłowym adresem e-mail.

Pomóż użytkownikowi wpisać prawidłowy format

Wiesz już, jak ustawić pole jako obowiązkowe. Jak poinstruujesz przeglądarkę, że użytkownik musi wpisać w polu formularza co najmniej 8 znaków?

Wypróbuj wersję demonstracyjną. Jeśli wprowadzisz zmiany krótsze niż osiem znaków, przesłanie formularza nie będzie możliwe.

Przełącz odpowiedź

<label for="password">Password (required)</label>
<input required="" minlength="8" type="password" id="password" name="password">

Nazwa atrybutu to minlength. Ustaw wartość 8 i masz odpowiednią regułę weryfikacji. Jeśli chcesz odwrotnie, użyj maxlength.

Podawanie reguł weryfikacji

<label for="password">Password (required)</label>
<input required minlength="8" type="password" id="password"
  name="password" aria-describedby="password-minlength">
<div id="password-minlength">Enter at least eight characters</div>

Dopilnuj, aby wszyscy użytkownicy rozumieli reguły weryfikacji. W tym celu połącz element sterujący formularza z elementem wyjaśniającym zasady. Aby to zrobić, dodaj atrybut aria-describedby do elementu z id formularza.

Atrybut wzoru

Czasem konieczne jest zdefiniowanie bardziej zaawansowanych reguł weryfikacji. Także w tym przypadku możesz użyć atrybutu HTML. Ma nazwę pattern. Możesz zdefiniować wyrażenie regularne.

<label for="animal">What is your favorite animal? (required)</label>
<input required pattern="[a-z]{2,20}" type="text" id="animal" name="animal">

Dozwolone są tylko małe litery. użytkownik musi wpisać od dwóch do dwudziestu znaków.

Jak zmienić pattern, by zezwalać też na wielkie litery? Wypróbuj

Przełącz odpowiedź

Właściwa odpowiedź to pattern="[a-zA-Z]{2,20}".

Dodaj style

Wiesz już, jak dodać sprawdzanie poprawności w kodzie HTML. Czy nie byłoby też wspaniale, gdyby można było również dostosować styl elementów sterujących formularza na podstawie stanu weryfikacji? Jest to możliwe dzięki CSS.

Jak dostosować styl wymaganego pola formularza

Pokaż użytkownikowi, że pole jest obowiązkowe, zanim wejdzie w interakcję z Twoim formularzem.

Do pól required możesz dodać styl za pomocą pseudoklasy CSS :required.

input:required {
  border: 2px solid;
}

Nieprawidłowe elementy sterujące formularza

Pamiętasz, co się dzieje, gdy dane wpisane przez użytkownika są nieprawidłowe? Pojawi się komunikat o błędzie dołączony do elementu sterującego formularza. Czy nie byłoby wspaniale przystosować wygląd elementu, gdy tak się dzieje?

Możesz użyć pseudoklasy :invalid. aby dodać style do nieprawidłowych elementów sterujących formularza. Oprócz tego istnieje też pseudoklasa :valid do określania prawidłowych elementów formularza.

Jest więcej sposobów na dostosowanie stylów na podstawie weryfikacji. W module CSS dowiesz się więcej o stylach formularzy.

Walidacja za pomocą JavaScriptu

Aby jeszcze bardziej polepszyć weryfikację formularzy, możesz użyć JavaScript Constraint Validation API.

Podawaj istotne komunikaty o błędach.

Wiesz już, że komunikaty o błędach nie są takie same w każdej przeglądarce. Jak możesz wyświetlić ten sam komunikat wszystkim użytkownikom?

W tym celu użyj metody setCustomValidity() Constraint Validation API. Zobaczmy, jak to działa.

const nameInput = document.querySelector('[name="name"]');

nameInput.addEventListener('invalid', () => {
    nameInput.setCustomValidity('Please enter your name.');
 });

Wyślij zapytanie do elementu, w którym chcesz ustawić niestandardowy komunikat o błędzie. Wysłuchaj zdarzenia invalid zdefiniowanego elementu. Tam została wysłana wiadomość z adresem setCustomValidity(). W tym przykładzie wyświetla się komunikat Please enter your name., jeśli dane wejściowe są nieprawidłowe.

Otwórz wersję demonstracyjną w różnych przeglądarkach, wszędzie zobaczysz ten sam komunikat. Teraz usuń JavaScript i spróbuj ponownie. Pojawią się ponownie domyślne komunikaty o błędach.

Interfejs Constraint Validation API pozwala robić znacznie więcej. Szczegółowe informacje na temat korzystania z JavaScript, które znajdziesz w jednym z kolejnych modułów.

Jak weryfikować w czasie rzeczywistym Aby dodać weryfikację w czasie rzeczywistym w JavaScript, możesz nasłuchiwać zdarzenia onblur elementu sterującego formularza i sprawdzać dane wejściowe od razu, gdy użytkownik opuści pole formularza.

Kliknij pole formularza w wersji demonstracyjnej. wpisz „web” i kliknij inne miejsce na stronie. Pod polem formularza zobaczysz natywny komunikat o błędzie dotyczący elementu minlength.

Więcej informacji o wdrażaniu weryfikację w czasie rzeczywistym za pomocą JavaScriptu, którą udostępnimy w kolejnym module.

Sprawdź swoją wiedzę

Sprawdź swoją wiedzę o weryfikacji formularzy

Za pomocą jakiego atrybutu możesz ustawić obowiązkowe elementy sterujące formularza?

required
🎉
needed
Spróbuj jeszcze raz.
essential
Spróbuj jeszcze raz.
obligatory
Spróbuj jeszcze raz.

Czy można zdefiniować własne komunikaty o błędach?

Tak, z atrybutem HTML message.
Spróbuj jeszcze raz.
Nie
To możliwe, spróbuj jeszcze raz.
Tak, z pseudoelementem CSS :invalid.
Spróbuj jeszcze raz.
Tak, z interfejsem Constraint Validation API.
🎉

Możesz przesłać atrybut <input> z atrybutem type="email" i required:

Jeśli to pole nie jest puste:
Spróbuj jeszcze raz.
jeśli jego wartością jest prawidłowy adres e-mail;
🎉
W każdym przypadku.
Spróbuj jeszcze raz.
Jeśli jego wartość zawiera słowo e-mail.
Spróbuj jeszcze raz.

Zasoby