Новая строка в текстовой области - PullRequest
254 голосов
/ 25 декабря 2011
<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-файла.Как я могу это сделать?

Ответы [ 12 ]

472 голосов
/ 25 декабря 2011

Попробуйте это:

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

&#10; Перевод строки и &#13; Возврат каретки HTML-сущности Википедия .Таким образом, вы фактически анализируете новую строку ("\ n"), а не отображаете ее в виде текста.

25 голосов
/ 25 декабря 2011
<textarea cols='60' rows='8'>This is my statement one.

This is my statement2</textarea>

Fiddle показывает, что он работает: http://jsfiddle.net/trott/5vu28/.

Если вы действительно хотите, чтобы это было в одной строке исходного файла, вы можете вставить ссылки на символы HTML для перевода строки ивозврат каретки, как показано в ответе @Bakudan:

  <textarea cols='60' rows='8'>This is my statement one.&#13;&#10;This is my statement2</textarea>
22 голосов
/ 23 января 2015

Я нашел String.fromCharCode(13, 10) полезным при использовании движков представления. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

Это создает строку с фактическими символами новой строки в ней и заставляет механизм представления выводить новую строку, а не экранированную версию. Например: Использование NodeJS EJS view engine - это простой пример, в котором любой \ n должен быть заменен:

viewHelper.js

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

EJS

<textarea><%- viewHelper.replaceNewline("Blah\nblah\nblah") %></textarea>

Оказывает

<textarea>Blah
blah
blah</textarea>

replaceAll:

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;
};
15 голосов
/ 01 апреля 2017

Я думаю, что вы путаете синтаксис разных языков.

  • &#10; - это (значение HtmlEncoded ASCII 10 или) литерала перевода строки в HTML строка.Но символ перевода строки НЕ отображается как разрыв строки в HTML (см. Примечания внизу).

  • \n - это литерал символа перевода строки (ASCII 10) в строке Javascript .

  • <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/>");
<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>

Несколько замечаний по поводу HTML:

  • Значение innerHTML элемента TEXTAREA не отображает HTML,Попробуйте следующее: <textarea>A <a href='x'>link</a>.</textarea>, чтобы увидеть.
  • Элемент P отображает все непрерывные пробелы (включая новые строки) как один пробел.
  • Символ LF не отображается для новогострока или разрыв строки в HTML.
  • TEXTAREA отображает LF как новую строку внутри поля текстовой области.
7 голосов
/ 25 декабря 2011

Чтобы получить новую строку внутри текстовой области, поместите в нее фактический разрыв строки:

    <textarea cols='60' rows='8'>This is my statement one.
    This is my statement2</textarea>
7 голосов
/ 25 декабря 2011

попробуйте это .. это работает:

<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;")));
5 голосов
/ 25 декабря 2011

Возможно, вы захотите использовать \n вместо /n.

2 голосов
/ 17 августа 2016

После многих испытаний у меня работает следующий код в Typescreipt

 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);
}
1 голос
/ 29 марта 2019

Разрыв строки ввода ключевого слова в текстовой области с использованием CSS:

white-space: pre-wrap;
0 голосов
/ 05 ноября 2018

просто используйте <br>
пример:

<textarea>
blablablabla <br> kakakakakak <br> fafafafafaf 
</textarea>

результат:
блаблаблабла
какакакакак
fafafafafaf

...