val () เทียบกับ text () สำหรับ textarea


107

ฉันใช้ jQuery และสงสัยว่าฉันควรใช้ val () หรือ text () (หรือวิธีอื่น) เพื่ออ่านและอัปเดตเนื้อหาของ textarea

ฉันได้ลองทั้งสองอย่างและฉันมีปัญหากับทั้งสองอย่าง เมื่อฉันใช้ text () เพื่ออัปเดต textarea ตัวแบ่งบรรทัด (\ n) ไม่ทำงาน เมื่อฉันใช้ val () เพื่อดึงเนื้อหา textarea ข้อความจะถูกตัดทอนหากยาวเกินไป


การแบ่งบรรทัดไม่ทำงานหมายความว่าอย่างไร
kaz

@kaz: ข้อความจะอยู่ในบรรทัดเดียวกัน
Christophe

และคุณหมายถึงอะไรโดย "text gets truncated" - ในเอาต์พุต debug ของคอนโซล? ในค่าตอบแทนเอง? จะง่ายกว่าถ้าคุณให้ jsfiddle ...
Constantin Groß

@Connum: ในค่าส่งคืน ลอง jsfiddle ตอนนี้ ...
Christophe

1
ฉันมาที่นี่โดย google'ing สำหรับข้อความ textarea ที่ถูกตัดทอน ฉันแก้ไขปัญหาด้วยการเพิ่ม \ n \ n สองสามตัวต่อท้าย. val () แปลก แต่ได้ผล
Darin

คำตอบ:


148

วิธีที่ดีที่สุดชุด / รับค่าของ textarea ที่เป็น.val(), .valueวิธีการ

.text()ใช้เมธอด.textContent(หรือ.innerTextสำหรับ IE) ภายในเพื่อรับเนื้อหาของไฟล์<textarea>. กรณีทดสอบต่อไปนี้แสดงให้เห็นถึงวิธีการtext()และ.val()เกี่ยวข้องกับแต่ละอื่น ๆ :

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 คุณสมบัติที่ใช้โดย.val()จะแสดงค่าที่สามารถมองเห็นได้ในปัจจุบันในขณะที่text()ค่าตอบแทน 's สามารถจะผิด


ขอบคุณลองตอนนี้ ขณะนี้ฉันไม่สามารถจำลองปัญหาที่ฉันมีด้วย val () และการตัดทอนได้ บางทีฉันอาจจะสงสัยผิด ...
Christophe

5
ขอบคุณมากสำหรับตัวอย่าง เห็นได้ชัดว่านั่นเป็นปัญหาของฉันฉันเขียนด้วย text () และอ่านด้วย val ()
Christophe

การเปลี่ยนค่าของ textarea ใช้text()ไม่ได้ทำงานอีกต่อไปหลังจากเปลี่ยนอะไรในนั้นด้วยตนเอง (เช่นการเพิ่มตัวละคร)
ม.ค.

12

.val()ใช้งานได้กับtextareaองค์ประกอบเสมอ

.text()ทำงานบางครั้งและล้มเหลวในครั้งอื่น ๆ ! ไม่น่าเชื่อถือ (ทดสอบใน Chrome 33)

สิ่งที่ดีที่สุดคือ.val()ทำงานร่วมกับองค์ประกอบฟอร์มอื่น ๆ ได้อย่างราบรื่นเช่นกัน (เช่นinput) ในขณะที่.text()ล้มเหลว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.