Respostas:
O problema vem do fato de que quebras de linha ( \n\r
?) Não são iguais às <br/>
tags HTML
var text = document.forms[0].txt.value;
text = text.replace(/\r?\n/g, '<br />');
ATUALIZAR
Como muitos comentários e minha própria experiência me mostraram que esta <br>
solução não está funcionando conforme o esperado, aqui está um exemplo de como acrescentar uma nova linha a um textarea
\ 'r \ n' usando
function log(text) {
var txtArea ;
txtArea = document.getElementById("txtDebug") ;
txtArea.value += text + '\r\n';
}
Decidi fazer isso como uma edição, e não como uma nova pergunta, porque essa é uma resposta muito popular para estar errada ou incompleta.
/(\r\n|\n|\r)/gm
textfixer.com/tutorials/javascript-line-breaks.php
/\r\n?|\n/g
sem captura, sem multilinha.
<br>
está errado. Para uma quebra de linha universal em uma área de texto que você deseja \r\n
. Por exemplo, o navegador UC ignora <br> e \ n em áreas de texto. Consulte Adicionar uma quebra de linha em uma área de texto HTML .
se você usar o script java geral e precisar atribuir string ao valor da área de texto,
document.getElementById("textareaid").value='texthere\\\ntexttext'.
você precisa substituir \n
ou < br >
a\\\n
caso contrário, ele fornece Uncaught SyntaxError: Unexpected token ILLEGAL
em todos os navegadores.
Talvez alguém ache isso útil:
Eu tive um problema com quebras de linha que foram passadas da variável do servidor para a variável javascript e, em seguida, o javascript as gravou na área de texto (usando as associações de valor knockout.js).
a solução estava escapando duas vezes de novas linhas:
orginal.Replace("\r\n", "\\r\\n")
no lado do servidor, porque com apenas um caractere de escape o javascript não estava analisando.
Você precisa usar \n
para linebreaks
dentrotextarea
Se você deseja exibir texto dentro de sua própria página, pode usar a <pre>
tag.
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>
Uma nova linha é apenas um espaço em branco no navegador e não será tratada de maneira diferente de um espaço normal (""). Para obter uma nova linha, você deve inserir <BR />
elementos.
Outra tentativa de resolver o problema: Digite o texto na área de texto e adicione algum JavaScript atrás de um botão para converter os caracteres invisíveis em algo legível e despejar o resultado em a DIV
. Isso informará o que seu navegador deseja.
Eu tenho uma área de texto com id é #infoartist follow:
<textarea id="infoartist" ng-show="dForm" style="width: 100%;" placeholder="Tell your contacts and collectors about yourself."></textarea>
No código javascript, vou obter o valor da área de texto e substituir a nova linha de escape (\ n \ r) pela <br />
tag, como:
var text = document.getElementById("infoartist").value;
text = text.replace(/\r?\n/g, '<br />');
Então, se você estiver usando jquery (como eu):
var text = $("#infoartist").val();
text = text.replace(/\r?\n/g, '<br />');
Espero que tenha ajudado. :-)
Aqui está o que eu fiz pelo mesmo problema que tive.
quando estou passando o texto para a próxima página no jsp, estou lendo como uma área de texto em vez de ler algo como
então a saída veio como você queria. e para outras propriedades, você pode usar como abaixo.
<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>
soluções expostas aqui: codepen.io/a-guerrero/pen/grgVBo