jQuery textarea追加换行符的行为

45

我正在尝试使用jQuery将以换行符结尾的字符串附加到文本区域中。 然而,在Firefox3.5和IE8中,不同的换行符号显示不同的行为,我似乎找不到一种可以在两个浏览器中正常工作的方法。

  • \n 在FF中有效但在IE中无效
  • <br/>\r\n 在IE中有效但在FF中无效
  • 使用<pre></pre>标签也没有成功

我看过关于IE innerHTML问题的信息,但我不确定如何最好地在jQuery中解决这个问题。 感谢任何帮助!

2个回答

97

不确定您如何设置文本区内容,但如果使用jQuery的val方法,在Firefox和IE(包括IE8)中,\n会始终有效:

var txt = $("textarea#idhere");
txt.val( txt.val() + "\nSomething here\n\nAgain");

使文本区域显示:

现有内容以及其中的换行符。
此处为某些内容

再次展示

您可以在此处看到演示,该演示适用于FF和IE8:演示 | 源代码


谢谢,这个可行!你知道这个与append()相比性能如何吗? - Suan
另外,令人惊讶的是,当你使用val()时,textarea.empty()不起作用。(当我使用append()时它可以工作)。你可以回到http://jsbin.com/unali/3/edit查看它。顺便说一句,这是一个真正不错的工具! - Suan
1
@Suan,它比.append()更快,因为它是设置属性而不是干扰DOM。另外,只需调用.val('')来清空文本区域即可。在“旧校JS”中,您可以通过以下方式获取/设置文本区域值: var txt = document.getElementById('idhere'); txt.value += "\nSomething here\n\nAgain"; 看看它如何使用属性而不是DOM元素? - Doug Neiner

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接