如何在HTML文本区域添加换行符?


Answers:


265

问题来自以下事实:换行符(\n\r?)与HTML <br/>标签不同

var text = document.forms[0].txt.value;
text = text.replace(/\r?\n/g, '<br />');

更新

由于许多评论和我自己的经验告诉我,该<br> 解决方案无法按预期工作,因此这里是一个如何在textarea使用'\ r \ n' 追加新行的示例

function log(text) {
    var txtArea ;

    txtArea = document.getElementById("txtDebug") ;
    txtArea.value +=  text + '\r\n';
}

我决定对此进行编辑,而不是作为一个新问题进行编辑,因为这是一个非常普遍的答案,以至于错误或不完整。


7
这也对我有用。在jQuery中,您可以执行以下操作:$('#caption')。html($('#caption')。text()。replace(/ \ n \ r?/ g,'<br />')) ;
DavGarcia

2
换行符Regexp应该为/(\r\n|\n|\r)/gm textfixer.com/tutorials/javascript-line-breaks.php
tothemario 2012年

3
正确的正则表达式/\r\n?|\n/g没有捕获,没有多行。
aMarCruz

5
怀疑<br>是错误的。对于在一个textarea通用换行符你想\r\n。例如,UC浏览器在文本区域中忽略<br>和\ n。请参阅在HTML文本区域中添加换行符
鲍勃·斯坦

2
在文本区域内使用<br>不起作用。至少不是在我测试过的Chrome中。使用\ n似乎可以工作。如果打算将文本插入为纯html,即在任何输入元素之外,请使用<br>。
Snorvarg

24

如果您使用常规的Java脚本,并且需要将字符串分配给文本区域值,则

 document.getElementById("textareaid").value='texthere\\\ntexttext'.

您需要更换\n< br >\\\n

否则,它将Uncaught SyntaxError: Unexpected token ILLEGAL在所有浏览器上显示。


18

也许有人觉得这很有用:

我遇到了从服务器变量传递到javascript变量的换行符的问题,然后javascript将它们写入textarea(使用基因敲除(knockout.js)值绑定)。

解决方案是两次转义新行:

orginal.Replace("\r\n", "\\r\\n")

在服务器端,因为只有一个转义字符,无法解析javascript。


在Windows中使用“ \\ n”对我有效,我认为它在Linux系统中可以正常工作。
萨米A 2014年


6

如果要在自己的页面内显示文本,则可以使用<pre>标记。

document.querySelector('textarea').addEventListener('keyup', function() {
  document.querySelector('pre').innerText = this.value;
});
<textarea placeholder="type text here"></textarea>
<pre style="font-family: inherits">
The
new lines will
be respected
      and spaces too
</pre>


3

换行符只是浏览器的空白,不会与普通空格(“”)区别对待。要换行,必须插入<BR />元素。

解决该问题的另一种尝试:在textarea中键入文本,然后在按钮后面添加一些JavaScript,以将不可见的字符转换为可读的字符并将结果转储为DIV。这将告诉您浏览器的需求。


3

我有一个ID为#infoartist的textarea,遵循:

<textarea id="infoartist" ng-show="dForm" style="width: 100%;" placeholder="Tell your contacts and collectors about yourself."></textarea>

在javascript代码中,我将获得textarea的值,并用<br />标记替换转义的新行(\ n \ r),例如:

var text = document.getElementById("infoartist").value;
text = text.replace(/\r?\n/g, '<br />');

因此,如果您使用的是jquery(例如我):

var text = $("#infoartist").val();
text = text.replace(/\r?\n/g, '<br />');

希望对您有帮助。:-)



0

这是我为遇到的同样麻烦所做的事情。

当我将文本传递到jsp的下一页时,我将其作为textarea读取,而不是像

因此输出就如您所愿。对于其他属性,可以如下使用。

<textarea style="background-color: white; border: none; width:660px;font-family: Arial, Helvetica, sans-serif; font-size:1.0em; resize:none;" name="text" cols="75" rows="15" readonly="readonly" ><s:property value="%{text}"/></textarea>
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.