我正在使用jQuery,并想知道是否应该使用val()或text()(或其他方法)来读取和更新textarea的内容。
我已经尝试了两种方式,但我遇到了两个问题。当我使用text()更新textarea时,换行符(\ n)不起作用。当我使用val()来检索textarea内容时,如果文本太长,文本会被截断。
答案 0 :(得分:146)
设置/获取textarea值的最佳方法是.val()
,.value
方法。
.text()
在内部使用.textContent
(或.innerText
for 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()
的返回值可能是错误的。
答案 1 :(得分:10)
.val()
始终适用于textarea
元素。
.text()
有时可以工作,有时会失败!它不可靠(在Chrome 33中测试)
最好的是.val()
与其他表单元素无缝协作(如input
),而.text()
失败。