文本区域中的新行

问题描述 投票:248回答:12
<textarea cols='60' rows='8'>This is my statement one.\n This is my statement2</textarea>

<textarea cols='60' rows='8'>This is my statement one.<br/> This is my statement2</textarea>

我尝试了两种,但在渲染html文件时新行没有反映出来。我怎样才能做到这一点?

html textarea line-breaks
12个回答
474
投票

试试这个:

    <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>

qazxsw poi Line Feed和qazxsw poi回程是qazxsw poi。这样,您实际上是在解析新行(“\ n”)而不是将其显示为文本。


0
投票

我使用其他答案中描述的模式的/nfunction不起作用。适合我案例的模式是:

 export function ReplaceNewline(input: string) {
    var newline = String.fromCharCode(13, 10);
    return ReplaceAll(input, "<br>", newline.toString());
}
export function ReplaceAll(str, find, replace) {
    return str.replace(new RegExp(find, 'g'), replace);
}

0
投票

T.innerText =“LF的位置:”+ t.value.indexOf(“\ n”);

white-space: pre-wrap;

-5
投票

只需使用.replace() 例如:

var str = "Test\n\n\Test\n\Test";
str.replace(/\r\n|\r|\n/g,'&#13;&#10;');

// str: "Test&#13;&#10;&#13;&#10;Test&#13;&#10;Test"

结果: blablablabla kakakakakak 道歉


25
投票
&#10;

小提琴显示它的工作原理:&#13;

如果你真的希望它在源文件中的一行上,你可以插入换行符和回车符的HTML字符引用,如@Bakudan的回答所示:


22
投票

我发现使用视图引擎时<textarea cols='60' rows='8'>This is my statement one. This is my statement2</textarea> 很有用。 http://jsfiddle.net/trott/5vu28/

这将创建一个包含实际换行符的字符串,因此强制视图引擎输出换行符而不是转义版本。例如:使用NodeJS EJS视图引擎 - 这是一个简单的示例,其中应该替换任何\ n:

viewHelper.js

  <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>

EJS

String.fromCharCode(13, 10)

呈现

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

全部替换:

exports.replaceNewline = function(input) {
    var newline = String.fromCharCode(13, 10);
    return input.replaceAll('\\n', newline);
}

15
投票

我认为你混淆了不同语言的语法。

  • <textarea><%- viewHelper.replaceNewline("Blah\nblah\nblah") %></textarea> 是(ASCII 10的HtmlEncoded值或)H​​TML字符串中的换行符字符。但换行符不会呈现为HTML中的换行符(请参阅底部的注释)。
  • <textarea>Blah blah blah</textarea> 是Javascript字符串中的换行字符文字(ASCII 10)。
  • String.prototype.replaceAll = function (find, replace) { var result = this; do { var split = result.split(find); result = split.join(replace); } while (split.length > 1); return result; }; 是HTML中的换行符。许多其他元素,例如&#10;\n等也会渲染换行符,除非被某些样式覆盖。

希望以下<br/>将更清楚:

<p>
<div>

关于Html的几点注意事项:

  • illustration元素的T.innerText = "Position of LF: " + t.value.indexOf("\n"); p1.innerHTML = t.value; p2.innerHTML = t.value.replace("\n", "<br/>"); p3.innerText = t.value.replace("\n", "<br/>");值不会呈现Html。尝试以下方法:<textarea id="t">Line 1&#10;Line 2</textarea> <p id='T'></p> <p id='p1'></p> <p id='p2'></p> <p id='p3'></p>看。
  • innerHTML元素将所有连续的空格(包括新行)渲染为一个空格。
  • LF字符不会呈现为HTML中的新行或换行符。
  • TEXTAREA将LF作为文本区域框内的新行。

7
投票

试试这个..它有效:

<textarea>A <a href='x'>link</a>.</textarea>

替换为 标签:

P

7
投票

要在文本区域内获取新行,请在其中放置实际的换行符:

TEXTAREA

5
投票

您可能想要使用<textarea id="test" cols='60' rows='8'>This is my statement one.&#10;This is my statement2</textarea> 而不是$("textarea#test").val(replace($("textarea#test").val(), "<br>", "&#10;")));


2
投票

经过大量的测试,以下代码在Typescript中为我工作

    <textarea cols='60' rows='8'>This is my statement one.
    This is my statement2</textarea>

2
投票

使用CSS在Textarea中输入关键字行:

\n
© www.soinside.com 2019 - 2024. All rights reserved.