<textarea>
Wielowierszowe pole tekstowe na dłuższe wypowiedzi: wiadomości, opinie, opisy.
- Wyświetlanie
- inline-block
- Znacznik zamykający
- Wymagany
- Dozwolona zawartość
- Tekst, który staje się wartością początkową pola
Przykład
#<style>
label { display: block; margin-bottom: 6px; }
textarea { width: 100%; max-width: 420px; }
</style>
<label for="feedback">Co możemy poprawić w kursie?</label>
<textarea id="feedback" name="feedback" rows="4" maxlength="500" placeholder="Napisz kilka zdań…"></textarea>Definicja i zastosowanie
#Element <textarea> tworzy pole, w którym można pisać wiele linii tekstu: wiadomość w formularzu kontaktowym, komentarz, opis projektu czy fragment kodu. W przeciwieństwie do <input> ma znacznik zamykający, a wartość początkową wpisujesz między znacznikami, a nie w atrybucie value.
Tekst między znacznikami jest brany dosłownie, łącznie ze spacjami. Wcięcia z kodu źródłowego trafią więc do pola, dlatego </textarea> zamykaj zaraz po treści, bez dodatkowych odstępów.
Rozmiar ustawisz atrybutami rows i cols albo w CSS. Użytkownik może domyślnie zmieniać wielkość pola, przeciągając róg, a kontroluje to właściwość CSS resize. Od 2026 roku we wszystkich głównych przeglądarkach pole może też samo rosnąć razem z treścią dzięki field-sizing: content.
Składnia
#<textarea name="nazwa" rows="4"></textarea>Atrybuty
#liczba
Wysokość pola w wierszach tekstu i szerokość w znakach, domyślnie 2 wiersze i 20 znaków. To tylko rozmiar początkowy, który możesz nadpisać w CSS.tekst
Podpowiedź widoczna w pustym polu. Podobnie jak w<input>, nie zastępuje etykiety.liczba znaków
Najkrótsza i najdłuższa dozwolona długość tekstu.maxlengthblokuje dalsze pisanie, aminlengthjest sprawdzany przy wysyłaniu formularza.atrybut logiczny
Pole musi zostać wypełnione, zanim formularz się wyśle.atrybut logiczny
readonlypozwala czytać i kopiować tekst, ale nie zmieniać go, a wartość zostanie wysłana.disabledcałkowicie wyłącza pole i pomija je przy wysyłaniu.wrap
soft | hard
Decyduje, czy długie linie łamane w polu mają zostać wysłane z dodatkowymi znakami nowej linii.soft(domyślnie) łamie tekst tylko na ekranie, ahardwstawia prawdziwe znaki nowej linii przy wysyłaniu i wymaga podaniacols.
Element obsługuje też wszystkie atrybuty globalne, takie jak class, id, style czy hidden.
Atrybuty w praktyce
#rows / cols
liczbaWysokość pola w wierszach tekstu i szerokość w znakach, domyślnie 2 wiersze i 20 znaków. To tylko rozmiar początkowy, który możesz nadpisać w CSS.
<textarea rows="5" cols="36" aria-label="Notatki">Lekcja 3: formularze
- label łączy się z polem przez for
- button bez type wysyła formularz</textarea>placeholder
tekstPodpowiedź widoczna w pustym polu. Podobnie jak w <input>, nie zastępuje etykiety.
<textarea rows="3" cols="36" aria-label="Opis projektu" placeholder="Czego nauczyłeś się, budując ten projekt?"></textarea>minlength / maxlength
liczba znakówNajkrótsza i najdłuższa dozwolona długość tekstu. maxlength blokuje dalsze pisanie, a minlength jest sprawdzany przy wysyłaniu formularza.
<form>
<textarea name="bio" rows="3" cols="36" minlength="20" maxlength="160" required aria-label="O mnie"></textarea>
<p><button>Zapisz bio</button></p>
</form>required
atrybut logicznyPole musi zostać wypełnione, zanim formularz się wyśle.
<form>
<textarea name="question" rows="2" cols="36" required aria-label="Pytanie do mentora"></textarea>
<p><button>Zadaj pytanie</button></p>
</form>readonly / disabled
atrybut logicznyreadonly pozwala czytać i kopiować tekst, ale nie zmieniać go, a wartość zostanie wysłana. disabled całkowicie wyłącza pole i pomija je przy wysyłaniu.
<p><textarea rows="2" cols="36" readonly aria-label="Treść zadania">Zbuduj stronę z trzema sekcjami i menu.</textarea></p>
<p><textarea rows="2" cols="36" disabled aria-label="Komentarz mentora">Mentor jeszcze nie ocenił zadania.</textarea></p>Obsługa przeglądarek
#Szeroko dostępne
Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Nie ustawiaj treści atrybutem
value, bo<textarea>go nie ma. Wartość początkową wpisz między znacznikami. - Jeśli użytkownik ma zmieniać tylko wysokość pola, ustaw w CSS
resize: vertical. - Przy polach z limitem znaków pokaż licznik, na przykład „120/500”, żeby limit nie zaskoczył użytkownika w połowie zdania.
Powiązane hasła
#- <input>Pole formularza: tekst, e-mail, hasło, liczba, data, suwak, pole wyboru, plik i wiele innych.
- <label>Etykieta pola formularza. Kliknięcie etykiety przenosi kursor do pola.
- <form>Formularz, który zbiera dane od użytkownika i wysyła je pod wskazany adres.
- <button>Klikalny przycisk: wysyła formularz, czyści go albo uruchamia akcję na stronie.
Widzisz błąd albo brakuje przykładu? Napisz do nas.