Generator formularza HTML
Wpisz pola w liniach tekstu i skopiuj kod formularza z etykietami, walidacją HTML5, wybranym układem i podglądem.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Wzór: Etykieta; typ; nazwa; reguły; opcje. Reguły oddzielaj pionową kreską (required|minlength:2), opcje listy i grup przecinkiem (Oferta, Wsparcie, Inne). Pustą nazwę utworzymy z etykiety. Typy i reguły są w ściądze pod narzędziem.
1–4, tylko dla układu „Siatka”.
Zmieniono ustawienia. Kliknij „Generuj formularz”, aby odświeżyć kod i podgląd.
Pola formularza
Wymagane
Rozmiar kodu
Linie kodu
Kod HTML formularza
Podgląd niczego nie wysyła. Kliknij w nim przycisk z pustymi polami, a zobaczysz komunikaty walidacji przeglądarki.
Ściąga: typy pól
| Typ | Co powstaje | Przykład linii |
|---|---|---|
| text | Pole tekstowe w jednej linii | Imię; text; name; required |
| Adres e-mail, przeglądarka sprawdza format | Email; email; email; required | |
| tel | Telefon, na komórce klawiatura numeryczna | Telefon; tel; phone; autocomplete:tel |
| number, range | Liczba albo suwak z min, max i step | Ilość; number; qty; min:1|max:10 |
| date, time, datetime-local, month | Wybór daty lub godziny w przeglądarce | Termin; date; date; required |
| password | Hasło (znaki ukryte) | Hasło; password; password; required|minlength:8 |
| url, search, color | Adres WWW, wyszukiwarka, wybór koloru | Strona WWW; url; website |
| file | Wysyłka pliku, dodaje enctype="multipart/form-data" | CV; file; cv; required |
| textarea | Pole wieloliniowe | Wiadomość; textarea; message; rows:6|maxlength:1000 |
| select | Lista rozwijana z opcjami | Temat; select; topic; required; Oferta, Wsparcie, Inne |
| radio | Pojedyncze pole albo grupa jednokrotnego wyboru | Ocena; radio; rating; required; Dobrze, Średnio, Źle |
| checkbox | Zgoda albo grupa wielokrotnego wyboru (name[]) | Zgoda; checkbox; consent; required |
Ściąga: reguły walidacji
| Reguła | Atrybut HTML | Gdzie działa |
|---|---|---|
| required | required | Wszystkie pola (w grupie checkboxów pomijana) |
| minlength:2, maxlength:100 | minlength, maxlength | text, email, tel, url, password, search, textarea |
| min:1, max:10, step:0,5 | min, max, step | number, range, date, time, month, datetime-local |
| pattern:[0-9]{2}-[0-9]{3} | pattern | text, email, tel, url, password, search; wpisuj jako ostatnią |
| placeholder:Jan Kowalski | placeholder | Pola tekstowe, number, textarea |
| autocomplete:email | autocomplete | Pola tekstowe i select |
| rows:6 | rows | textarea |
| multiple | multiple | select, file, email |
Walidacja w przeglądarce to wygoda, nie ochrona
Atrybuty required, minlength czy pattern sprawdza przeglądarka przed wysłaniem. Da się je łatwo obejść, np. wysyłając żądanie bez formularza, więc te same reguły trzeba sprawdzić na serwerze. novalidate wyłącza sprawdzanie w przeglądarce; przydaje się, gdy walidację robi własny skrypt.
Etykiety i autouzupełnianie
Każde pole dostaje <label for> powiązany z id: czytnik ekranu odczyta nazwę pola, a kliknięcie etykiety ustawi w nim kursor. Reguła autocomplete (np. email, tel, given-name, new-password) pomaga przeglądarce i menedżerom haseł podpowiadać właściwe dane.
GET czy POST
GET dopisuje dane do adresu strony (?q=…), więc pasuje do wyszukiwarek i filtrów. POST wysyła dane w treści żądania: używaj go w formularzach kontaktowych, logowaniu i wszędzie, gdzie coś się zapisuje. Pliki wysyła się tylko metodą POST z enctype="multipart/form-data"; generator dodaje go sam przy polu file.
Czego kod nie zawiera
Wygenerowany kod to sam HTML. Obsługę wysyłki (zapis, e-mail) musisz mieć na serwerze pod adresem z action. W aplikacji z sesją dodaj token CSRF (w Laravelu @csrf), a przeciw spamowi np. ukryte pole-pułapkę lub CAPTCHA.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator formularza HTML
Generator formularza HTML zamienia listę pól wpisaną w liniach tekstu na gotowy kod <form>: z etykietami powiązanymi z polami, atrybutami walidacji HTML5, adresem action, metodą GET lub POST i przyciskiem wysyłki. Pod kodem widać działający podgląd, w którym sprawdzisz komunikaty walidacji przeglądarki.
Na start możesz wybrać jeden z sześciu szablonów: kontakt, newsletter, logowanie, rejestracja, zamówienie i ankieta. Jeden formularz mieści do 60 pól.
Typy pól
| Typ | Zastosowanie |
|---|---|
| text, email, tel, url, search | dane kontaktowe, adresy, wyszukiwarka |
| password | hasła (znaki ukryte) |
| number, range | liczby i suwak z zakresem |
| date, time, datetime-local, month | daty i godziny |
| textarea | dłuższe wypowiedzi |
| select, checkbox, radio | wybór opcji z listy lub grupy |
| file, color | wysyłka plików, wybór koloru |
Nieznany typ generator zamienia na text i pokazuje uwagę z numerem linii, więc literówka nie psuje całego formularza.
Walidacja formularza HTML5
Atrybuty required, minlength, maxlength, min, max, step i pattern sprawdzają dane w przeglądarce przed wysłaniem. To pierwsza linia obrony – serwer musi walidować ponownie. Opcja novalidate wyłącza sprawdzanie w przeglądarce, co przydaje się, gdy walidację przejmuje własny skrypt. Oprócz reguł walidacji możesz dopisać placeholder, autocomplete, rows (wysokość textarea) i multiple.
Format definicji pola
Każda linia to etykieta; typ; nazwa; reguły; opcje, np. Email; email; email; required|autocomplete:email. Reguły rozdzielaj pionową kreską, a wartość reguły podawaj po dwukropku (minlength:2). Piąta część to opcje dla select, radio i checkbox, rozdzielone przecinkiem. Obowiązkowa jest tylko etykieta: pusty typ oznacza text, a pustą nazwę narzędzie tworzy z etykiety bez polskich znaków (z „Imię i nazwisko” powstaje imie_i_nazwisko).
Jak działa generator formularza HTML
Generator czyta tekst linia po linii i dzieli każdą linię średnikami. Etykieta staje się tekstem widocznym dla użytkownika, nazwa trafia do atrybutu name, czyli do danych wysyłanych na serwer, a reguły zamieniają się na atrybuty pola. Każde pole dostaje <label for> powiązany z identyfikatorem field-nazwa, więc kliknięcie etykiety ustawia kursor w polu, a czytnik ekranu odczytuje jego nazwę.
Pola z opcjami działają inaczej niż pojedyncze. Lista select dostaje pustą pierwszą pozycję „— wybierz —”, dzięki której required wymusza świadomy wybór; bez opcji generator wstawia „Opcja 1” i „Opcja 2” i ostrzega o tym. Grupa radio lub checkbox z opcjami trafia do <fieldset> z <legend>, a nazwa grupy checkboxów dostaje końcówkę [], żeby backend odebrał wszystkie zaznaczone wartości. Przy polu file formularz dostaje sam enctype="multipart/form-data".
Do wyboru są trzy układy: pionowy (etykieta nad polem), poziomy (etykieta w kolumnie o szerokości 120–200 px obok pola) i siatka z 1–4 kolumnami, w której przycisk zajmuje całą szerokość. Opcjonalnie dołączysz prosty CSS przypisany do identyfikatora formularza: formularz o szerokości do 640 px, pola na całą jego szerokość, a w układzie poziomym i siatce jedna kolumna na ekranach węższych niż 600 px. Nad kodem narzędzie pokazuje liczbę pól, pól wymaganych, rozmiar kodu w bajtach i liczbę linii, a pod nimi uwagi do sprawdzenia, np. powtórzoną nazwę pola, pusty action albo plik wysyłany metodą GET.
Przykład krok po kroku
- Wypisz pola formularza kontaktowego: imię, e-mail, telefon, wiadomość i zgoda. To 5 linii definicji.
- Wpisz linie z typami i regułami:
Imię; text; imie; required|minlength:3|maxlength:40,Email; email; email; required|autocomplete:email,Telefon; tel; telefon; autocomplete:tel|pattern:[0-9]{9},Wiadomość; textarea; wiadomosc; maxlength:500|rows:6,Zgoda na kontakt; checkbox; zgoda; required. Progi 3, 40 i 500 to przykładowe wartości – narzędzie nie narzuca własnych. - Policz atrybuty walidacji: 3 w polu imienia i po 1 w czterech pozostałych, razem 7.
autocompleteirowsnie walidują, tylko podpowiadają dane i ustawiają wysokość pola. - Wygeneruj kod. Kafelki pokażą 5 pól, 3 wymagane (imię, e-mail, zgoda) i 23 linie kodu bez CSS: znacznik
<form>, po 4 linie na każde pole, przycisk i zamknięcie formularza. - Wybierz układ. W siatce z 2 kolumnami 5 pól ułoży się w 3 rzędy (2 + 2 + 1), a przycisk trafi pod nie na całą szerokość.
- Wpisz w ustawieniach adres
action, np./kontakt, zostaw metodę POST i sprawdź w podglądzie, co się stanie po kliknięciu przycisku z pustymi polami. Obsługę wysyłki, ponowną walidację i token CSRF dodaj po stronie serwera.
Gotowe linie dla typowych pól
| Pole | Linia definicji | Co sprawdzi przeglądarka |
|---|---|---|
| Kod pocztowy | Kod pocztowy; text; kod; required|autocomplete:postal-code|pattern:[0-9]{2}-[0-9]{3} | format 00-000 |
| Telefon (9 cyfr) | Telefon; tel; telefon; autocomplete:tel|pattern:[0-9]{9} | dokładnie 9 cyfr bez spacji |
| NIP | NIP; text; nip; pattern:[0-9]{10} | 10 cyfr, bez sumy kontrolnej |
| Hasło przy rejestracji | Hasło; password; haslo; required|minlength:8|autocomplete:new-password | co najmniej 8 znaków |
| Ilość sztuk | Ilość; number; ilosc; required|min:1|max:10 | liczba od 1 do 10 |
| Kwota z groszami | Kwota; number; kwota; min:0|step:0,01 | liczba nieujemna z krokiem 0,01 |
| Godzina wizyty | Godzina; time; godzina; min:08:00|max:16:00 | godzina między 8:00 a 16:00 |
| Temat wiadomości | Temat; select; temat; required; Oferta, Wsparcie, Inne | wybór jednej opcji |
| Zainteresowania | Zainteresowania; checkbox; tematy; ; SEO, Grafika, Hosting | nic, wybór jest dobrowolny |
Przecinek w step:0,01 generator zamienia na kropkę, bo tylko taki zapis rozumie przeglądarka. Przeglądarka dopasowuje pattern do całej wartości, więc [0-9]{9} odrzuci zarówno 8, jak i 10 cyfr.
Praktyczne wskazówki
- Nazwy pól zapisuj bez spacji i polskich znaków. Atrybut
nametrafia do zapytania i do kodu backendu, więcimieiwiadomoscdziałają przewidywalniej niż wersje z ogonkami; przy spacji w nazwie generator pokaże uwagę. - Etykietę pisz po polsku i konkretnie, bo widzi ją użytkownik. Nazwę trzymaj techniczną i krótką, bo widzi ją serwer.
- Każda nazwa powinna wystąpić raz. Przy powtórce zdublują się identyfikatory pól, a PHP odczyta tylko ostatnią wartość.
- Zaczynaj od pól najłatwiejszych. Krótkie pole tekstowe obniża próg wejścia, a pytania wymagające namysłu przenieś na koniec.
- Bez dołączonego CSS układ pionowy zależy od stylów twojej strony: etykieta i pole są elementami liniowymi i bez reguły
display: blockmogą stanąć obok siebie. patternwpisuj jako ostatnią regułę, bo wyrażenie regularne może zawierać pionową kreskę. Przetestuj je w podglądzie na poprawnej wartości, wartości z myślnikami i ciągu zupełnie niepasującym.- Nowe przeglądarki interpretują
patternw trybie flagiv, w którym myślnik i nawiasy wewnątrz klasy znaków trzeba poprzedzić ukośnikiem. Zapis[0-9 +-]bywa przez to odrzucony i pole przestaje być sprawdzane.
Czego narzędzie nie uwzględnia
- Logiki warunkowej. Generator nie pokazuje ani nie ukrywa pól w zależności od wcześniejszych odpowiedzi; taki formularz wymaga własnego JavaScriptu.
- Obsługi wysyłki i tokena CSRF. Kod zawiera
actioni metodę, ale odbiór danych, zapis i wysłanie e-maila musi zrobić serwer, który generuje też ukryte pole z tokenem. - Kontroli poprawności
pattern. Źle napisane wyrażenie regularne przejdzie do kodu bez ostrzeżenia i zacznie blokować poprawne dane albo przepuszczać błędne. - Sum kontrolnych i ochrony przed spamem. NIP czy PESEL sprawdzisz w przeglądarce tylko co do długości i cyfr, a przeciw botom potrzebne jest ukryte pole-pułapka lub CAPTCHA.
- Wymagania zaznaczenia w grupie checkboxów. Przeglądarka nie wymusi wyboru co najmniej jednej opcji, dlatego generator usuwa tam
requiredi ostrzega, że trzeba to sprawdzić na serwerze.
Najczęstsze pytania o formularz HTML
Czy walidacja HTML5 wystarczy?
Nie. Żądanie można wysłać z pominięciem formularza, więc każdą regułę trzeba powtórzyć na serwerze przed zapisem danych.
Czy dostanę gotowy formularz kontaktowy w HTML?
Szablon „Kontakt” daje pola imienia, e-maila i wiadomości z walidacją, adresem wysyłki i przyciskiem. Do działania potrzebny jest jeszcze skrypt na serwerze pod adresem z action, który zapisze wiadomość albo prześle ją e-mailem.
Jak wpisać kilka reguł dla jednego pola?
Rozdziel je pionową kreską w czwartej części linii, np. required|minlength:2|maxlength:100. Pusta czwarta część oznacza pole bez walidacji.
Jak zrobić grupę radio lub checkbox?
Wystarczy jedna linia z opcjami po przecinku w piątej części, np. Ocena; radio; ocena; required; Dobrze, Średnio, Źle. Generator zbuduje z niej <fieldset> z osobnym polem dla każdej opcji i wspólną nazwą.
Jak dodać token CSRF?
Token generuje backend, więc dopisz go po wklejeniu kodu do szablonu aplikacji, np. w Laravelu dyrektywą @csrf wewnątrz formularza.
Czy mogę użyć polskich znaków w etykiecie?
Tak, etykieta jest tylko tekstem widocznym dla użytkownika. Nazwę pola lepiej zapisać bez ogonków i spacji; jeśli ją pominiesz, generator utworzy ją z etykiety w takiej właśnie formie.