metin alanı için val () ile metin () karşılaştırması


107

JQuery kullanıyorum ve bir metin alanının içeriğini okumak ve güncellemek için val () veya text () (veya başka bir yöntem) kullanmam gerekip gerekmediğini merak ediyorum.

İkisini de denedim ve ikisiyle de sorunlar yaşadım. Metin alanını güncellemek için text () kullandığımda, satır kesmeleri (\ n) çalışmıyor. Metin alanı içeriğini almak için val () kullandığımda, metin çok uzunsa kesiliyor.


satır sonlarının çalışmaması ne anlama geliyor?
kaz

@kaz: metin aynı satırda kalır.
Christophe

Konsolun hata ayıklama çıktısında "metin kesiliyor" ile ne demek istiyorsunuz? Dönüş değerinin kendisinde mi? Bir jsfiddle sağlarsanız daha kolay olurdu ...
Constantin Groß

@Connum: dönüş değerinde. Şu anda jsfiddle deniyor ...
Christophe

1
Buraya, kısaltılmış metin alanı metni için google'ing yaparak geldim. .Val () 'nin sonuna \ n \ n birkaç ekleyerek sorunumu çözdüm. Garip ama işe yaradı.
Darin

Yanıtlar:


148

Bir metin alanının değerini ayarlamanın / almanın en iyi yolu .val(), .valueyöntemidir.

.text()dahili olarak .textContent(veya .innerTextIE için) yöntemini kullanarak bir <textarea>. Aşağıdaki test senaryoları birbirleriyle nasıl text()ve .val()ilgili olduklarını göstermektedir :

var t = '<textarea>';
console.log($(t).text('test').val());             // Prints test
console.log($(t).val('too').text('test').val());  // Prints too
console.log($(t).val('too').text());              // Prints nothing
console.log($(t).text('test').val('too').val());  // Prints too

console.log($(t).text('test').val('too').text()); // Prints test

value Özelliği kullanılan, .val()oysa her zaman geçerli görünür değerini gösterir text()bireyin dönüş değeri yanlış olabilir.


thx, bunu hemen deniyorum. Şu anda val () ve kesme ile yaşadığım sorunu tekrarlayamıyorum. Belki de yanlış şüpheliyi buldum ...
Christophe

5
Örnekler için çok teşekkürler. Görünüşe göre bu benim sorunumdu, text () ile yazdım ve val () ile okudum.
Christophe

Kullanarak bir metin alanının değerini değiştirmek, text()içindeki herhangi bir şeyi manuel olarak değiştirdikten sonra (örneğin bir karakter ekledikten sonra) artık çalışmıyor
Jan

12

.val()her zaman textareaöğelerle çalışır .

.text()bazen çalışır ve diğer zamanlarda başarısız olur! Güvenilir değil (Chrome 33'te test edildi)

En iyisi, .val()diğer form öğeleriyle de (gibi input) sorunsuz çalışır ancak .text()başarısız olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.