val()与textarea的text()

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

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

设置/获取textarea值的最好方法是.val()方法。

.text()内部使用.textContent (或.innerText for IE)方法来获取<textarea>的内容。 以下testing用例说明了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 

.val()使用的value 属性总是显示当前的可见值,而text()的返回值可能是错误的。

.val()总是和textarea元素一起工作。

.text()有时会起作用,并会在其他时间失败! 这是不可靠的(在Chrome 33中testing)

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

通过属性名称而不是idselect<textarea>

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