Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
tenho um campo do tipo** <textarea> **e** **estou implementando nesse campo com JS a possibilidade de inserir uma tag <br> todo vez que o usuário clicar na tecla "Enter". Consegui fazer isso, mas o problema é que o <br> fica visível, não quero isso. Tentei trocar ' <br />' por ' \n' e deu certo em parte, pois ele não é visível no campo textarea, mas quando recupero a informação ele não existe.
Preciso gravar a informação do textarea com os <br>, no entanto não quero que ele seja visível no campo. quero que seja visível somente quando eu for recuperar essa informação.
O script é esse:
<textarea name="info" onkeypress="OnEnter(this);" id="enter"></textarea>
<script>
function OnEnter(){
var x = window.event.keyCode;
if (x == 13) {
document.getElementById('enter').value += "<br />";
}
}
</script>Primeiro agradeço pela sua resposta Omar~, obrigado.
Mas respondendo o "para que isso":
Eu sei que o textarea já faz a quebra de linha sim, mas ao salvar em BD o texto é gravado sem essas quebras, de modo que ao recuperar ou exibir essa informação na tela, o texto é contínuo, dependendo do números de caracteres ele será exibido em uma linha somente. Eu eu não quero isso.
Quero que,por exemplo, ao digitar o texto:
Lorem Ipsum
é simplesmente
uma simulação de texto .
seja recuperado do Banco do mesmo modo, com as mesmas quebras de linhas.
Se eu salvar em textarea simples, ao recuperar esse mesmo texto, ele viria assim:
Lorem Ipsum é simplesmente uma simulação de texto.
Entendeu?
Sei que existem vários editores do tipo WYSIWYG, mas pro que eu quero, não seria o ideal, pois preciso somente desse recurso da queba de linha.
Obriado pelas dicas, vou corrigir o código
*"então sua função não deveria começar assim?: **function OnEnter (event) {***
*Ah e abaixo da condição da tecla não traga retorno usando **return false;"***Mas você pode tratar as quebras de linhas depois com um elemento <pre></pre>.
Exemplo [aqui](https://codepen.io/angelorubin/pen/MqqGdR?editors=1011).Obg angelorubin, mas não deu muito certo.
Deu certo como Preview, antes de gravar no banco ele exibe com as quebras de linhas, tudo certinho, mas depois que gravo no banco e em seguida recupero esse texto e exibo na tela, o texto já não tem as quebras de linhas. Vem tudo numa linha só.
Preciso que sempre que eu for consultar esse texto ele venha com as mesmas quebras de linhas.
A única solução que vejo é gravar com <br>. A pergunta é: como??
Com o JS que fiz, consegui incluir os <br>, o problema é que ele fica visível no textarea.Mas você já experimentou utilizar com o elemento <pre> na exibição do HTML?
sim, fiz um teste usando php para consultar e exibir na tela. Exibe tudo numa linha
echo "<pre>".$info."</pre>";Se tivesse me adiantado que usava PHP no backend tinha facilitado, utilize a funçao nl2br.
Agora deu certinho!
Valeu angelorubin, obg!
Vou só detalhar como ficou para deixar registrado.
O JS foi eliminado.
Ficou somente o <textarea> normal em HTML.
Cada enter dado pelo usuário, uma quebra de linha é criada normalmente com *\n* .
Ao enviar o formulário para o script PHP, capturo o conteúdo do <textarea> e armazeno numa variável* **$texto*
em seguida vem a "mágica" usando a função **nl2br();**
$texto = nl2br($texto);
A função troca o \n por <br />, desse modo minha variável *$texto *armazena o texto capturado com os <br /> existentes.
Daí é só gravar no banco, e toda vez que consultar as quebras estarão lá;
Obrigado **Omar~ e angelorubin**
Olha, lhe pergunto para que isso?
Uma vez que o textarea já faz a quebra de linha toda vez que a tecla enter é pressionada?
Mas só por olhar me parece que você está fazendo correto só que a função depende de 1 parâmetro OnEnter(this) que é a tecla pressionada e aqui você diz que o parâmetro é event
window.event.keyCode.