文本区域的val()与text()


106

我正在使用jQuery,想知道是否应该使用val()或text()(或其他方法)来读取和更新textarea的内容。

我尝试过两者,但都遇到了问题。当我使用text()更新textarea时,换行符(\ n)不起作用。当我使用val()检索textarea内容时,如果文本太长,则文本将被截断。


换行符不起作用是什么意思?
kaz 2012年

@kaz:文本停留在同一行。
Christophe

在控制台的调试输出中,“文本被截断”是什么意思?在返回值本身?如果您提供了一个jsfiddle,将会更容易...
ConstantinGroß

@Connum:在返回值中。立即尝试jsfiddle ...
Christophe

1
我是通过google'ing截断的textarea文本到达的。我通过在.val()的末尾添加几个\ n \ n来解决我的问题。很奇怪,但是有效。
Darin

Answers:


148

设置/获取文本区域值的最佳方法是.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 property.val()始终显示当前可见值,而text()的返回值可能是错误的。


thx,现在就尝试这个。我目前无法复制val()和截断的问题。也许我猜错了……
Christophe

5
感谢很多例子。显然那是我的问题,我使用text()编写并使用val()阅读。
Christophe

text()在手动更改textarea的值(例如,添加字符)后,使用更改textarea的值将无法正常工作
1

12

.val()始终与textarea元素一起使用。

.text()有时会工作,而有时会失败!不可靠(已在Chrome 33中测试)

最好的是,它也.val()可以与其他表单元素无缝协作(例如input),但是会.text()失败。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.