Как добавить разрывы строк в текстовую область HTML?
-
21-08-2019 - |
Вопрос
я редактирую <textarea>
с JavaScript.Проблема в том, что когда я делаю в нем разрывы строк, они не отображаются.Как я могу это сделать?
Я получаю значение для написания функции, но оно не дает разрывов строк.
Решение
Проблема возникает из-за того, что разрывы строк (\n\r
?) не совпадают с HTML <br/>
теги
var text = document.forms[0].txt.value;
text = text.replace(/\r?\n/g, '<br />');
Другие советы
если вы используете общий Java-скрипт и вам нужно присвоить строку значению текстовой области, тогда
document.getElementById("textareaid").value='texthere\\\ntexttext'.
вам нужно заменить \n
или < br >
к \\\n
в противном случае это дает Uncaught SyntaxError: Unexpected token ILLEGAL
во всех браузерах.
Вам нужно использовать \n
для linebreaks
внутри textarea
Возможно, кому-то это окажется полезным:
У меня была проблема с разрывами строк, которые передавались из переменной сервера в переменную javascript, а затем javascript записывал их в текстовую область (используя привязки значений Knockout.js).
решением было двойное экранирование новых строк:
orginal.Replace("\r\n", "\\r\\n")
на стороне сервера, потому что Javascript не анализировался только с одним escape-символом.
Новая строка для браузера представляет собой просто пробел и не будет трактоваться иначе, чем обычный пробел (" ").Чтобы получить новую строку, необходимо вставить <BR />
элементы.
Еще одна попытка решить проблему:Введите текст в текстовую область, а затем добавьте немного кода JavaScript за кнопкой, чтобы преобразовать невидимые символы во что-то читаемое и сохранить результат в файл. DIV
.Это скажет вам, чего хочет ваш браузер.
Если вы хотите отображать текст внутри своей страницы, вы можете использовать <pre>
ярлык.
document.querySelector('textarea').addEventListener('keyup', function() {
document.querySelector('pre').innerText = this.value;
});
<textarea placeholder="type text here"></textarea>
<pre>
The
new line will
be respected
</pre>
У меня есть текстовое поле с идентификатором #infoartist следовать:
<textarea id="infoartist" ng-show="dForm" style="width: 100%;" placeholder="Tell your contacts and collectors about yourself."></textarea>
В коде JavaScript я получу значение текстовой области и заменю экранирующую новую строку (
) на <br />
тег, например:
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 />');
Надеюсь, это помогло вам.:-)
Если вам просто нужно отправить значение тестовой области на сервер с разрывами строк, используйте нл2бр
вот что я сделал с той же проблемой, что и у меня.
когда я передаю текст на следующую страницу в JSP, я читаю его как текстовую область, а не читаю что-то вроде
поэтому результат пришел так, как вы хотели.а для других свойств вы можете использовать, как показано ниже.
<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>