Answers:
问题来自以下事实:换行符(\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';
}
我决定对此进行编辑,而不是作为一个新问题进行编辑,因为这是一个非常普遍的答案,以至于错误或不完整。
/(\r\n|\n|\r)/gm
textfixer.com/tutorials/javascript-line-breaks.php
/\r\n?|\n/g
没有捕获,没有多行。
如果要在自己的页面内显示文本,则可以使用<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>
换行符只是浏览器的空白,不会与普通空格(“”)区别对待。要换行,必须插入<BR />
元素。
解决该问题的另一种尝试:在textarea中键入文本,然后在按钮后面添加一些JavaScript,以将不可见的字符转换为可读的字符并将结果转储为DIV
。这将告诉您浏览器的需求。
我有一个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 />');
希望对您有帮助。:-)
这是我为遇到的同样麻烦所做的事情。
当我将文本传递到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>
<pre></pre>
解决方案的Codepen演示在这里公开:codepen.io/a-guerrero/pen/grgVBo