val () vs. text () untuk textarea


107

Saya menggunakan jQuery, dan bertanya-tanya apakah saya harus menggunakan val () atau text () (atau metode lain) untuk membaca dan memperbarui konten textarea.

Saya telah mencoba keduanya dan saya mengalami masalah dengan keduanya. Ketika saya menggunakan text () untuk memperbarui textarea, jeda baris (\ n) tidak berfungsi. Saat saya menggunakan val () untuk mengambil konten textarea, teks akan terpotong jika terlalu panjang.


apa artinya jeda baris tidak berfungsi?
kaz

@kaz: teks tetap di baris yang sama.
Christophe

Dan apa yang Anda maksud dengan "teks terpotong" - dalam output debug konsol? Dalam nilai kembali itu sendiri? Akan lebih mudah jika Anda memberikan jsfiddle ...
Constantin Groß

@Connum: dalam nilai yang dikembalikan. Mencoba jsfiddle sekarang ...
Christophe

1
Saya sampai di sini dengan google'ing untuk teks textarea terpotong. Saya memperbaiki masalah saya dengan menambahkan beberapa \ n \ n di akhir .val (). Aneh tapi berhasil.
Darin

Jawaban:


148

Cara terbaik untuk mengatur / mendapatkan nilai textarea adalah .val(), .valuemetode.

.text()secara internal menggunakan metode .textContent(atau .innerTextuntuk IE) untuk mendapatkan konten file <textarea>. Kasus uji berikut menggambarkan bagaimana text()dan .val()berhubungan satu sama lain:

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

The value properti , yang digunakan oleh .val()selalu menunjukkan nilai yang terlihat saat ini, sedangkan text()'s nilai kembali bisa salah.


terima kasih, coba ini sekarang. Saat ini saya tidak dapat mereplikasi masalah yang saya alami dengan val () dan pemotongan. Mungkin aku salah menduga ...
Christophe

5
Terima kasih banyak atas contohnya. Rupanya itu masalah saya, saya menulis dengan teks () dan membaca dengan val ().
Christophe

Mengubah nilai textarea menggunakan text()TIDAK berfungsi lagi setelah secara manual mengubah apa pun di dalamnya (misalnya menambahkan karakter)
Jan

12

.val()selalu bekerja dengan textareaelemen.

.text()bekerja kadang-kadang dan gagal di lain waktu! Tidak dapat diandalkan (diuji di Chrome 33)

Yang terbaik adalah yang .val()bekerja dengan mulus dengan elemen bentuk lain juga (seperti input) sedangkan .text()gagal.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.