Walidacja pól formularza <input pattern>
Jak zrobić pole formularza do wpisania tekstu w niestandardowym formacie - np. kodu pocztowego?
<input pattern="wzorzec">
- wzorzec
- Wyrażenie regularne
Pozwala określić tzw. wyrażenie regularne (ang. regular expression) w postaci specjalnego wzorca definiującego format danych, który musi zostać spełniony podczas wpisywania tekstu w polu formularza przez użytkownika. Jest to pewien rodzaj filtru, który uniemożliwia nieprawidłowe wypełnienie formularza.
Jeśli użytkownik wpisze wartość w niepoprawnym formacie, przeglądarka wyświetli komunikat błędu i zablokuje możliwość wysłania formularza. Komunikat ten będzie jednak dość ogólny - np.: "Podaj wartość w wymaganym formacie". Niestety użytkownik może się nie domyślić, co właściwie oznacza ten "wymagany format". Dlatego zaleca się dodatkowo ustawić atrybut title="..."
, w którym możemy bardziej szczegółowo opisać, co powinno być wpisane w danym polu. W takiej sytuacji przeglądarka może dopisać wartość tego atrybutu do komunikatu błędu.
Atrybut pattern="..."
nie blokuje wysłania formularza, jeśli użytkownik w ogóle nie wypełni pola. Może to być pomocne, kiedy nie jest ono obowiązkowe, ale gdy już zostanie uzupełnione, to musi spełniać określony format danych. Jeśli jednak chcemy wymusić wypełnienie pola, trzeba dodatkowo użyć atrybutu required.
Do walidacji wybranych standardowych typów wartości (color, date, datetime-local, email, month, number, range, time, url, week) warto skorzystać z podstawowej wersji pola formularza. Pozwoli to nie tylko prawidłowo zweryfikować poprawność wprowadzanych danych, ale również w wielu przypadkach udostępni użytkownikowi specjalną wersję kontrolki ułatwiającej wybór wartości. Ponadto urządzenia mobilne (np. smartfony) mogą wtedy przełączyć klawiaturę ekranową we właściwy tryb zawierający odpowiedni zestaw klawiszy.
Przykład <input pattern>
Kod pocztowy musi się rozpoczynać dwiema cyframi, następnie zawierać myślnik i na końcu trzy cyfry (np.: 12-345):
📋 Zaznacz kod ▶ Edytuj na żywo
<input name="kod_pocztowy" pattern="^[0-9]{2}-[0-9]{3}$" title="pięć cyfr w postaci XX-XXX (np. 12-345)">
Zobacz przykład: pattern="..."
Pytania i odpowiedzi
Co to znaczy błąd walidacji formularza?
Błąd walidacji formularza oznacza, że dane wprowadzone przez użytkownika nie spełniają określonych kryteriów poprawności, takich jak brak wymaganych pól, niewłaściwy format danych (np. adres e-mail), czy też niezgodność z innymi ograniczeniami (np. minimalna długość hasła). W efekcie formularz nie zostanie przesłany, dopóki błędy nie zostaną poprawione.
Jakie elementy walidacji formularzy pojawiły się w języku HTML5?
W HTML5 wprowadzono wiele nowych elementów i atrybutów ułatwiających walidację formularzy, takich jak: typy pól email, url, number; atrybuty required
, pattern="..."
, min="..."
, max="..."
, minlength="..."
, maxlength="..."
; oraz atrybut novalidate
do wyłączania walidacji. Te narzędzia pozwalają na automatyczne sprawdzanie poprawności danych bez potrzeby pisania dodatkowych skryptów.
Przeglądarki
![]() Chrome | ![]() Firefox | ![]() Edge | ![]() Opera | ![]() Safari | Poziom wsparcia min. 2,5 roku | |
---|---|---|---|---|---|---|
<input pattern> | 4 2010-01-25 | 4 2011-03-22 | 12 2015-07-29 | ≤12.1 2012-11-20 | 5 2010-06-07 |
Komentarze
- Comandeer
16.02.2022 12:52
Tak, ale to jest by design.
Zobacz więcej - Gość
16.02.2022 12:29
Nie działa atrybut autoplay
Zobacz więcej - UszatySiemanko
15.11.2021 10:13
* poradnik dzięki 8) 8) 8) 8) 8) 8)
Zobacz więcej - kiszuriwalilibori
04.01.2018 18:57
Czy tylko u mnie (firefox) Datalist działa w dziwny sposób? Nie wyświetla listy wyboru po wejściu, ale dopiero po wpisaniu znaku, i to nie każdego ale pierwszego, który jest zawarty w polach opcji. A jak nie ma tego znaku to nic nie wyświetla. I nie musi to być pierwszy znak, tylko jakikolwiek...
Zobacz więcej - Michalski Bydgoszcz
27.03.2017 14:36
Aha dzięki pomogłeś, a z tym progress bar sobie podaruję wymyśle coś innego
Zobacz więcej - Comandeer
27.03.2017 14:33
Tylko w JS.
Zobacz więcej - Michalski Bydgoszcz
27.03.2017 14:32
Aha dzięki ogarnąłem jeszcze musze ogarnąć to z <progress> czy jest to możliwe tylko w js czy może także w tym ulepszonym html5 ?
Zobacz więcej - Michalski Bydgoszcz
27.03.2017 14:28
Więc czy muszę wpisać jakich kodeków używa plik lub/czy wystarczy podać format plików???
Zobacz więcej - Comandeer
27.03.2017 14:24
Tam, gdzie będzie iframe, tam będzie odtwarzacz z YT.
Zobacz więcej - Michalski Bydgoszcz
27.03.2017 14:23
Dzięki musiałem coś przeoczyć w samouczku html 5 bo pierwszy raz spotykam się z i frame a może używałem jej poprostu do czego innego i nie pojąłem tego iż można to wykożystać w taki sposób.
Jeśli dobrze pamiętam to wg. Twojego przykładu <i frame ustawia miejsce znajdowania się miniatury video...
Zobacz więcej