文本区域中的新行

dis*_*cky 269 html textarea line-breaks

<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>
Run Code Online (Sandbox Code Playgroud)

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

Bak*_*dan 494

试试这个:

    <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>
Run Code Online (Sandbox Code Playgroud)

&#10;&#13;换行和回车符是HTML实体维基百科.这样,您实际上是在解析新行("\n")而不是将其显示为文本.

  • @LittleAlien https://jsfiddle.net/v0y3xvpx/1/ - 基于OP问题回答,显然问题解决了 (2认同)
  • 不仅仅是'&#10;`足以解析`\ n`吗? (2认同)

Sur*_*rya 52

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

white-space: pre-wrap;
Run Code Online (Sandbox Code Playgroud)

  • 这个应该更高 (5认同)
  • 这是达到所需结果的最简单方法,谢谢@Suraj (2认同)
  • 这就是答案 (2认同)

Tro*_*ott 27

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

This is my statement2</textarea>
Run Code Online (Sandbox Code Playgroud)

小提琴显示它的工作原理:http://jsfiddle.net/trott/5vu28/.

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

  <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>
Run Code Online (Sandbox Code Playgroud)


Dan*_*nce 25

String.fromCharCode(13, 10)在使用视图引擎时发现很有帮助. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

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

viewHelper.js

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

EJS

<textarea><%- viewHelper.replaceNewline("Blah\nblah\nblah") %></textarea>
Run Code Online (Sandbox Code Playgroud)

呈现

<textarea>Blah
blah
blah</textarea>
Run Code Online (Sandbox Code Playgroud)

全部替换:

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;
};
Run Code Online (Sandbox Code Playgroud)

  • 我想建议一个更简单的方法来替换所有:var regExp = new RegExp(find,"gi"); STR = str.replace(正则表达式,取代); (3认同)
  • 我做了`s = s.replace(/ \\n/g,String.fromCharCode(13,10))`.这虽然很神奇.谢谢. (2认同)

Old*_*zer 16

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

  • &#10;是(ASCII 10的HtmlEncoded值或)HTML字符串中的换行符字符.但是换行符不会呈现在HTML换行符(见注在底部).

  • \nJavascript字符串中的换行字符文字(ASCII 10).

  • <br/>是HTML中的换行符.许多其他元素,如<p>,<div>等也呈现换行符,除非有一些风格覆盖.

希望以下插图能够更清晰:

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/>");
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

关于Html的几点注意事项:

  • 元素的innerHTMLTEXTAREA不会呈现Html.尝试以下方法:<textarea>A <a href='x'>link</a>.</textarea>看看.
  • P元素将所有连续的空格(包括新行)渲染为一个空格.
  • LF字符不会呈现为HTML中的新行或换行符.
  • TEXTAREA呈现LF作为文本区域箱内的新线.

  • 从表面上看,这篇文章似乎很复杂,但实际上包含了很多有用的信息。如果您以编程方式向您的 `&lt;textarea/&gt;` 添加行,这就是您需要的帖子! (2认同)

Sal*_*ket 7

试试这个..它有效:

<textarea id="test" cols='60' rows='8'>This is my statement one.&#10;This is my statement2</textarea>
Run Code Online (Sandbox Code Playgroud)

替换
标签:

$("textarea#test").val(replace($("textarea#test").val(), "<br>", "&#10;")));
Run Code Online (Sandbox Code Playgroud)

  • 它实际上是$("textarea #test").val().replace(/ \n/g,"&#10;"); (这将取代所有出现的新行) (3认同)

Juk*_*ela 7

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

    <textarea cols='60' rows='8'>This is my statement one.
    This is my statement2</textarea>
Run Code Online (Sandbox Code Playgroud)


Bog*_*n D 6

您还应该检查元素的 csswhite-space属性(mdn docs),确保将其设置为不会抑制换行符的值,例如:

white-space: pre-line;
Run Code Online (Sandbox Code Playgroud)

您会对这 3 个值感兴趣:

pre
的空白序列被保留。仅在源中的换行符和 <br> 元素处断行。

预换行
保留空白序列。换行符、<br> 处以及填充行框所需的位置都会断行。

前行
空白序列被折叠。换行符、<br> 处以及填充行框所需的位置都会断行。


Zar*_*Zar 5

您可能要使用\n而不是/n

  • 好吧,一个文字\ n也不起作用,它必须是一个*实际*换行符。 (5认同)