Znacznik input i jego typy
<input> to pole formularza, a jego atrybut type decyduje o rodzaju pola. Ten sam znacznik tworzy pole tekstowe, suwak, wybór daty albo wybór koloru. Wypróbuj każde pole poniżej i naciśnij Submit, żeby zobaczyć, co wysyła formularz:
<input> to element pusty, więc nie ma znacznika zamykającego. Jego name to klucz, pod którym wysyłana jest wartość, a value to wartość początkowa. Brakujący lub błędnie wpisany type daje zwykłe pole tekstowe.
Wszystkie typy input w HTML
type | Co to jest | Uwagi |
|---|---|---|
text | Jedna linia tekstu | Typ domyślny |
password | Tekst wyświetlany jako kropki | Sam z siebie nie jest szyfrowany; wysyłaj go przez HTTPS |
email | Adres e-mail | Waliduje format; klawisz @ na klawiaturze telefonu |
url | Adres internetowy | Musi zaczynać się od schematu, np. https:// |
tel | Numer telefonu | Klawiatura numeryczna na telefonie, bez sprawdzania formatu |
search | Pole wyszukiwania | Często pokazuje przycisk czyszczenia |
number | Liczba | Przyciski strzałek, min, max, step |
range | Suwak | Z założenia nieprecyzyjny; wartość to liczba |
date | Data | Wartość to YYYY-MM-DD |
time | Godzina | Wartość to HH:MM (format 24-godzinny) |
datetime-local | Data i godzina, bez strefy czasowej | Wartość to YYYY-MM-DDTHH:MM |
month | Rok i miesiąc | Nie każda przeglądarka go obsługuje |
week | Rok i numer tygodnia | Nie każda przeglądarka go obsługuje |
color | Wybór koloru | Wartość to #rrggbb małymi literami |
checkbox | Pole włącz/wyłącz | Zobacz checkbox w HTML |
radio | Jeden wybór z grupy | Zobacz przyciski radio w HTML |
file | Wybór pliku | accept, multiple |
hidden | Wartość wysyłana, ale niewidoczna | Na identyfikatory i tokeny |
submit | Przycisk wysyłania | <button type="submit"> jest bardziej elastyczny |
reset | Przycisk resetu | Rzadko dobry pomysł |
button | Przycisk, który sam nic nie robi | Do JavaScriptu |
image | Przycisk wysyłania w postaci obrazka | Wysyła też współrzędne kliknięcia |
Typy tekstowe i klawiatury telefonów
email, url, tel, search i text na komputerze wyglądają jak zwykłe pole tekstowe. Różnią się walidacją i tym, jaka klawiatura otwiera się na telefonie. Obramowanie w tym przykładzie robi się zielone lub czerwone zależnie od oceny wartości przez przeglądarkę:
ada@exampleto dla przeglądarki poprawny e-mail: sprawdza tylko tekst,@i domenę, a nie to, czy domena ma kropkę. Prawdziwe sprawdzenie odbywa się na serwerze.example.comnie jest poprawnymurl, bo nie ma schematu.https://example.comjest.telprzyjmuje wszystko. Formaty numerów telefonów za bardzo różnią się między krajami, więc nie ma wbudowanego sprawdzania; dodajpattern, jeśli go potrzebujesz.inputmode="numeric"prosi telefony o klawiaturę z cyframi bez problemów, jakie dajetype="number", dlatego to właściwy wybór dla kodów pocztowych, kodów jednorazowych i numerów kart.
number i range
Oba przyjmują min, max i step. number służy do dokładnych wartości; range to suwak dla wartości, w których dokładna liczba ma mniejsze znaczenie. Suwak nie pokazuje liczby, więc połącz go z <output>:
Dla number wartość domyślna step to 1, więc pole ceny bez step="0.01" odrzuca 4.99 przy wysyłaniu formularza. W JavaScripcie input.value to zawsze ciąg znaków; aby dostać liczbę, użyj input.valueAsNumber.
Daty i godziny
Typy daty i czasu otwierają wbudowany selektor przeglądarki. To, co widzi użytkownik, zależy od jego ustawień regionalnych (09/24/2026, 24.09.2026), ale wartość zawsze ma ten sam stały format:
Ten stały format otrzymuje serwer i odczytuje JavaScript, więc nigdy nie musisz parsować "24.09.2026". min i max przyjmują ten sam format. datetime-local nie ma strefy czasowej: jeśli ma ona znaczenie, przelicz ją na serwerze według strefy użytkownika.
color i file
accept="image/*" ogranicza wybór plików do obrazków (i na telefonach proponuje aparat); przyjmuje też rozszerzenia, np. accept=".pdf,.docx". To tylko wskazówka dla okna wyboru, więc typ pliku sprawdzaj na serwerze. multiple pozwala wybrać kilka plików. Prawdziwe przesyłanie wymaga też na formularzu method="post" i enctype="multipart/form-data".
Podpowiedzi z datalist
<datalist> daje polu tekstowemu listę podpowiedzi, a jednocześnie pozwala wpisać dowolną wartość. Połącz je atrybutem list:
Wpisz w pole "ja", żeby zobaczyć pasujące podpowiedzi. W przeciwieństwie do listy select użytkownik może wpisać wartość, której nie ma na liście.
Atrybuty pól input
| Atrybut | Działanie |
|---|---|
name | Klucz, pod którym wysyłana jest wartość |
value | Wartość początkowa |
placeholder | Podpowiedź widoczna, gdy pole jest puste (nie etykieta) |
required | Musi być wypełnione przed wysłaniem |
disabled | Nie da się go użyć i nie jest wysyłane |
readonly | Nie da się go edytować, ale jest wysyłane |
autocomplete | Co ma się uzupełniać automatycznie: email, name, current-password, one-time-code, off |
min, max, step | Ograniczenia dla liczb, suwaków, dat i godzin |
minlength, maxlength | Ograniczenia długości dla typów tekstowych |
pattern | Wyrażenie regularne, do którego musi pasować cała wartość |
inputmode | Jaką klawiaturę pokazać na telefonie: numeric, decimal, email, tel, url |
list | id elementu <datalist> |
multiple | Kilka wartości, dla email i file |
accept | Typy plików dla file |
Częste błędy
type="number"dla numerów telefonów, kodów pocztowych lub numerów kart. To nie są ilości. Użyjtelalbotextzinputmode="numeric".- Pole ceny bez
step="0.01". Wartości dziesiętne nie przechodzą walidacji. placeholderjako etykieta. Znika, gdy tylko użytkownik zacznie pisać.- Poleganie na
acceptlubtype="email"w kwestii bezpieczeństwa. To udogodnienia; serwer sprawdza jeszcze raz. type="month"lubtype="week"bez rozwiązania zapasowego. Niektóre przeglądarki pokazują zwykłe pole tekstowe.- Znacznik zamykający
</input>.<input>jest pusty.
Najczęściej zadawane pytania
Ile jest typów input w HTML?
22: button, checkbox, color, date, datetime-local, email, file, hidden, image, month, number, password, radio, range, reset, search, submit, tel, text, time, url i week. Nieznany lub brakujący typ działa jak text.
Jaki jest domyślny typ input w HTML?
text. <input> bez type albo z typem, którego przeglądarka nie zna, to jednoliniowe pole tekstowe.
Czy używać type="number" dla numerów telefonów lub kodów pocztowych?
Nie. number służy do ilości: dodaje przyciski strzałek i odrzuca +, spacje i myślniki, które zawierają numery telefonów. Dla numerów telefonów używaj type="tel", a dla kodów, takich jak kody pocztowe i numery kart, type="text" z inputmode="numeric".
Jakiego formatu używa input type date?
Wartość to zawsze YYYY-MM-DD, np. 2026-09-24, niezależnie od formatu, który użytkownik widzi na ekranie. Wyświetlanie zależy od ustawień regionalnych użytkownika; wysyłana wartość i wartość w skryptach już nie.
Czy znacznik input potrzebuje znacznika zamykającego?
Nie. <input> to element pusty: pisz <input type="text" name="city">. Zamykające </input> jest niepoprawne, a samozamykający ukośnik w <input /> jest dozwolony, ale nic nie robi.