
Pro psaní delších textů na webu:
- článků,
- komentářů,
- diskusních příspěvků,
- zpráv do chatu
A pro další případy, kdy potřebujeme více řádků editovatelného textu, se používá značka <textarea> (v překladu textová oblast).
Atributy
Většinu atributů má <textarea> společných se značkou <input>.
Textarea nemá atribut value, obsah se zadává mezi počáteční a koncovou značku (počáteční i koncová značka je povinná).
<textarea>
Obsah
</textarea>
name- Jméno políčka, podle kterého se dá následně zpracovávat na serveru.
cols- Počet sloupců. V podstatě nastavuje šířku pole. Je možné nahradit CSS vlastností
width. rows- Počet řádků. Stanovuje výšku políčka. Je možné nahradit CSS vlastností
height. Někdo tyto atributy důsledně vyplňuje kvůli zobrazení bez kaskádových stylů. wrap- Atribut
wrapmůže nabývat hodnotysoft(výchozí) ahard. Použitíwrap=hardspolu s omezením počtu znaků na řádek (atributcols) by mělo zajistit, že v<textarea>nemůže vzniknout řádek delší než hodnota vcols. Podpora napříč prohlížeči je špatná. Navíc vždy takové ošetření musíme dělat na straně serveru. Zalamovat slova jde i v CSS přesword-wrap: break-word. disabled- Pole je úplně zablokované. Nejde na něm vyvolat
onclicka neodešle se na server. autofocus- Po načtení stránky dá políčku rovnou
focus(ukázka). Osobně takové chování nemám příliš rád, neboť přesun kursoru do pole typicky zablokuje ovládání klávesami. placeholder- Předvyplní políčko hodnotou, která po aktivování zmizí. Zároveň se nebude odesílat na server. Detailní popis atributu
placehodlerje na samostatné stránce. spellcheck- Zapne nebo vypne kontrolu pravopisu.
maxlength- Maximální počet znaků, co lze do políčka napsat.
required- Pole musí být vyplněno.
Změna velikosti
Kromě IE umí prohlížeče automaticky měnit velikost <textarea> přes tažením za okraje. Zakázat to jde CSS vlastností resize.
Přístup v JavaScriptu
Aktuální obsah pole se nachází ve vlastnosti value.
var textarea = document.getElementsByTagName("textarea")[0];
alert(textarea.value);
V případě, že je v poli nějaký předvyplněný text, je možné ho získat i přes innerHTML. Také jde obsah do innerHTML nastavit, ovšem po jakékoliv editaci už nebude vidět – přebije ho value, která se potom i odešle na server.
Ukázka rozdílů innerHTML a value
Původní hodnota (value) v době načtení stránky je dostupná skrz JS vlastnost defaultValue.
alert(textarea.defaultValue);
Formátování
Textarea jde docela dobře stylovat (ukázka).
Častým přáním je v ní odlišně zvýrazňovat jednotlivá slova. To běžně možné není. Je nutné použít element s contenteditable.
Výchozí posuvník v IE
V Internet Exploreru má <textarea> automaticky svislý posuvník. Zbavit se ho můžeme nastavení overflow: auto. Ukázka.
Počet znaků a slov
Jak počítat počty znaků a slov je popsáno na samostatné stránce.
Neinterpretování HTML značek
Zvláštní vlastnost textového pole tkví v jisté podobnosti se značkou <xmp>. Do <textarea> je totiž možné stejně tak vepsat prakticky libovolné HTML bez převádění na entity, aniž by se provedlo.
Jediný problém je další <textarea>, přesněji řečeno její koncová značka. Ukázka <textarea> / ukázka značky <xmp>.
Někdy se <textarea> také používá pro pohodlné označování textu.
Související články
Odeslání formuláře tlačítkem mimo něj
Jak odeslat formulář tlačítkem, které je mimo formulář.
Resetování <input type=file>
Jak resetovat (odstranit) hodnotu z <input>u pro upload souborů.
