Menu

HTML Textarea: rows, resize, maxlength ve Varsayılan Metin

<textarea> ile çok satırlı metin alanı yapma: rows ve cols, etiketlerin arasındaki varsayılan metin, yeniden boyutlandırma ve otomatik büyüme, karakter sayacıyla maxlength, gönderilen metindeki satır sonları ve stil verme.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Textarea nasıl yapılır

<textarea> birden fazla satır için bir metin alanıdır: mesajlar, yorumlar, açıklamalar. rows görünür yüksekliğini satır cinsinden belirler. Birkaç satır yaz ve Send'e bas:

<input> etiketinden iki farkı var: textarea'nın kapanış etiketi gerekir ve başlangıç metni bir value özelliği yerine etiketlerin arasına girer. name değeri, satır sonları dahil metin değer olarak gönderilir.

Textarea özellikleri

ÖzellikNe yapar
nameMetnin gönderildiği anahtar
rowsSatır cinsinden görünür yükseklik (varsayılan 2)
colsKarakter cinsinden görünür genişlik (varsayılan 20); CSS width genellikle daha iyidir
placeholderBoşken gösterilen ipucu
maxlength, minlengthKarakter cinsinden uzunluk sınırları
requiredBoş olmamalı
readonlySeçilip kopyalanabilir, düzenlenemez; yine de gönderilir
disabledKullanılamaz; gönderilmez
wrapsoft (varsayılan) ya da hard, aşağıya bak
spellchecktrue ya da false

Varsayılan metin etiketlerin arasına girer

<textarea> ile </textarea> arasındaki her şey, boşluklar, tab'lar ve satır sonları dahil, tam olarak yazıldığı gibi başlangıç metnidir. Yalnızca açılış etiketinden hemen sonraki tek bir satır sonu yok sayılır. Bu da girintiyi bir tuzağa çevirir:

İkinci textarea dört boşlukla başlar ve bir satır sonu ile iki boşluk daha ile biter; okurun hepsini silmesi gerekir. Varsayılan metni etiketlere bitişik yaz.

Bir textarea içindeki HTML işlenmez; etiketlerin arasındaki <b>hi</b> olduğu gibi bu metin olarak görünür.

Genişlik, yeniden boyutlandırma ve otomatik büyüme

Tarayıcılar okurun bir textarea'yı köşesinden sürükleyerek yeniden boyutlandırmasına izin verir. CSS resize bunu sınırlar, box-sizing: border-box ile width: 100% de onun kapsayıcısını tam olarak doldurmasını sağlar:

Sonuncusu her tuş vuruşunda yüksekliğini sıfırlar ve sonra onu scrollHeight (içeriğinin ve padding'inin yüksekliği) artı kenarlıklarına ayarlar. İçine birkaç satır yaz: hiçbir zaman kaydırma çubuğu göstermez. En kullanıcı dostu varsayılan resize: vertical olur: uzun cevaplar yer bulur ve kimse alanı yerleşimden daha geniş sürükleyemez.

Chromium tarayıcıları otomatik büyümeyi yalnızca CSS ile field-sizing: content kullanarak yapabilir. Bunu desteklemeyen tarayıcılar satırı yok sayar ve normal boyutu korur, bu yüzden eklemek güvenlidir; ama her okurun büyüyen kutuyu alması gerekiyorsa script'i tut.

maxlength ve karakter sayacı

maxlength girdiyi belirli bir karakter sayısında durdurur. Tek başına hiçbir uyarı vermez, yani okur bunu ancak yazma çalışmayı bıraktığında fark eder. Bir sayaç bunu çözer:

aria-describedby ekran okuyucuların sayacı alanla birlikte okumasını sağlar, aria-live="polite" de tuş vuruşları arasında sayaçtaki değişiklikleri duyurur. maxlength yalnızca tarayıcı tarafından uygulanır, bu yüzden sunucunun da uzunluğu kontrol etmesi gerekir.

Gönderilen metindeki satır sonları

Okurun satır sonları metinle birlikte gönderilir. Gönderilen veride her biri bir satır başı ve satır besleme çiftine dönüşür (URL kodlanmış bir formda %0D%0A); çoğu sunucunun beklediği budur. Metni daha sonra bir sayfada satır sonlarıyla göstermek için ya çıktıda onları <br> etiketine çevir ya da elemente white-space: pre-line stili ver.

wrap="hard" (cols gerektirir) daha da ileri gider: metnin görsel olarak kaydığı yerlere de satır sonları ekler, böylece sunucu cols karakterden uzun olmayan satırlar alır. Varsayılan olan wrap="soft" yalnızca okurun yazdığı satır sonlarını gönderir.

Textarea'ya stil vermek

Chrome ve Firefox textarea'lara yaklaşık 13px boyutunda monospace bir yazı tipi verir; bir textarea'nın çoğu zaman sırıtmasının nedeni budur. font: inherit bunu düzeltir. Kenarlığı değiştirirsen görünür bir odak stili bırak:

Placeholder metni okunabilir bir kontrasta ulaşmalı; birçok tasarımın kullandığı açık gri okunması zordur. Ve her alanda olduğu gibi placeholder bir label değildir: okur yazmaya başladığı anda kaybolur. Label'lar HTML label sayfasında anlatılıyor.

Sık yapılan hatalar

  • <textarea value="...">. value özelliği yoktur; metni etiketlerin arasına koy.
  • Varsayılan metne HTML ile birlikte girinti vermek. Boşluklar değerin bir parçası olur.
  • Kendiliğinden kapanan bir <textarea />. Boş bir element değildir; </textarea> olmadan sayfanın geri kalanı metin olarak onun içine yutulur.
  • font: inherit olmaması, bu durumda alan küçük monospace bir yazı tipi kullanır.
  • Küçük sabit bir yükseklikle resize: none. Uzun cevaplar minik, kayan bir kutuda kalır.
  • Yalnızca maxlength değerine güvenmek. Uzunluğu sunucuda da doğrula.

Sıkça Sorulan Sorular

HTML'de textarea nasıl oluşturulur?

Bir form içine, bir <label> ile birlikte <textarea name="message" rows="4"></textarea> yaz. <input> etiketinden farklı olarak kapanış etiketi vardır ve etiketlerin arasındaki her şey başlangıç metnidir.

Bir textarea'nın varsayılan değeri nasıl ayarlanır?

Metni etiketlerin arasına koy: <textarea name="bio">Hello</textarea>. HTML'de textarea'nın value özelliği yoktur. JavaScript'te textarea.value değerini oku ve ayarla.

Bir textarea'nın yeniden boyutlandırılmasını nasıl engellerim?

CSS'te resize: none ayarla. resize: vertical genellikle daha kullanıcı dostudur: okur uzun metinler için onu yine uzatabilir, ama yana doğru sürükleyerek yerleşimini bozamaz.

Bir textarea'daki karakter sayısını nasıl sınırlarım?

maxlength="280" ekle. Tarayıcı o uzunlukta girdi almayı durdurur. Okur ne kadar yer kaldığını bilsin diye yanına input olayında güncellenen bir sayaç koy ve uzunluğu sunucuda da kontrol et.

Textarea'm neden farklı bir yazı tipi kullanıyor?

Chrome ve Firefox textarea'lara varsayılan olarak yaklaşık 13px boyutunda monospace bir yazı tipi verir. Sayfanın geri kalanıyla eşleşmesi için font: inherit ekle.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA