2012-01-13 93 views
95

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

我已经尝试过两种方法,而且我遇到了问题。当我使用text()更新textarea时,换行符(\ n)不起作用。当我使用val()来检索textarea内容时,如果文本太长,文本会被截断。

+0

您是否尝试过html()? – Znarkus 2012-01-13 16:59:31

+0

这是什么意思换行符不起作用? – kaz 2012-01-13 17:00:16

+0

@Znarkus:不... – Christophe 2012-01-13 17:01:34

回答

133

设置/获取文本区域值的最佳方法是.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()的返回值可以是错误的。

+0

thx,现在就试试这个。我目前无法复制我用val()和截断的问题。也许我得到了错误的嫌疑...... – Christophe 2012-01-13 21:23:28

+5

感谢一堆例子。显然这是我的问题,我用text()编写并用val()读取。 – Christophe 2012-01-14 03:02:00

+0

使用'text()'改变textarea的值在手动改变任何东西之后不再起作用(例如添加一个字符) – Jan 2017-07-03 15:37:39

-4

通过属性名称而不是id选择<textarea>

<textarea id="message" name="message"></textarea> 
<script> 
    jQuery("textarea[name='message']").val(); 
</script> 
+15

这是怎么得到的吗?这与问题完全无关,并且绝对没有价值。这也是一个糟糕的指导,因为在选择器中使用ID效率更高,并且不会选择具有相同名称的多个textareas。 – michael 2016-06-24 20:01:22

6

.val()总是适用于textarea元素。

.text()工作有时会失败其他时间!这是不可靠的(在Chrome 33测试)

最好的是,.val()也可以无缝地与其他表单元素(如input),而.text()失败。