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

IT技术 javascript html textarea line-breaks
2021-01-29 05:17:40

我正在<textarea>用 JavaScript编辑一个问题是当我在其中换行时,它们不会显示。我怎样才能做到这一点?

我正在获取编写函数的值,但它不会换行。

6个回答

问题来自这样一个事实,即换行符 ( \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';
}

我决定对此进行编辑,而不是作为一个新问题,因为这是一个太受欢迎的答案,不可能是错误或不完整的。

换行符 Regexp 应该是/(\r\n|\n|\r)/gm textfixer.com/tutorials/javascript-line-breaks.php
2021-03-30 05:17:40
怀疑<br>是错的。对于您想要的 textarea 中通用换行符\r\n例如,UC 浏览器会忽略文本区域中的 <br> 和 \n。请参阅在 HTML 文本区域中添加换行符
2021-03-30 05:17:40
在 textarea 中使用 <br> 不起作用。至少不是在我测试的 Chrome 中。虽然使用 \n 似乎有效。如果您打算将文本作为纯 html 插入,即在任何输入元素之外,请使用 <br>。
2021-03-31 05:17:40
正确的正则表达式/\r\n?|\n/g没有捕获,没有多行。
2021-04-03 05:17:40
这也适用于我。在 jQuery 中,您可以执行以下操作: $('#caption').html($('#caption').text().replace(/\n\r?/g, '<br />')) ;
2021-04-06 05:17:40

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

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

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

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

也许有人觉得这很有用:

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

解决方案是双重转义新行:

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

在服务器端,因为只有单个转义字符 javascript 没有解析。

在 Windows 中使用 "\\n" 对我有用,我认为它在 Linux 系统中可以正常工作。
2021-04-03 05:17:40

您需要\n用于linebreaks内部textarea

适用于 Firefox v71。谢谢!
2021-03-13 05:17:40

如果你想在你自己的页面中显示文本,你可以使用<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>