如何在jQuery中保留textarea中的换行符?

问题描述:

我知道我的问题与此相似:jQuery text() function loses line breaks in IE,但我的需求稍有不同。如何在jQuery中保留textarea中的换行符?

我在我的页面上有一个textarea,它有一个由用户输入的“模板”字符串。 (它让他们编写一条消息,使用%NAME%作为名称的占位符)。

用户完成“模板”之后,我将它放入第二个textarea,它实际上用任何名称替换%NAME%应该使用。我已经涵盖了这部分功能,并且它完美地工作。

第二部分也适用于大多数浏览器。

但是,在Internet Explorer中,第一个textarea的换行符不会保留到第二个。因此,举例来说,如果用户进入第一箱:

Hi %NAME%, 
How are you? 

和名字来代替文字是“扎克”,第二个框将显示为:

Hi Zak,How are you? 

我的代码来获得文成第二个框是:

var inviteTemplate=$('#invitationTemplate').text(); 
inviteTemplate=inviteTemplate.replace(/%NAME%/g,name); 
$('#invitationText').html(inviteTemplate); 

我假设的问题是使用.text()得到textarea的内容。有什么办法可以让IE保留第二个textarea的换行符?

+2

尝试使用.html()或.val() – 2011-02-02 02:40:39

+0

如果这些是文本框,那么你不应该使用val()而不是text()或html()? – 2011-02-02 02:42:51

我可以确认,在IE9测试版中,您可以将文本从一个TEXTAREA元素传输到保留换行符的另一个TEXTAREA元素。

现场演示:http://jsfiddle.net/LWjP6/1/

您正在阅读的数据,文本和写它作为HTML。你试过用HTML BR标签代替换行符吗?例如

inviteTemplate = inviteTemplate.replace(/\n/g, '<br>'); 

我敢肯定,会做你想做的。