GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

RESOLVIDO: Como recuperar texto do BD com quebra de linha num "textarea" do Bootstrap?

Tags: #<Tag:0x00007f9aa3c312a8> #<Tag:0x00007f9aa3c31168> #<Tag:0x00007f9aa3c30f88> #<Tag:0x00007f9aa3c30e20>

Fala pessoal, estou precisando de uma ajudinha aqui com meu textarea do bootstrap.

Tenho um formulário com o textarea, que está tudo funcionando perfeitamente (CRUD), os dados são salvos e recuperados de uma tabela do MySQL, tudo ok.

Porém ao incluir um texto que por ventura possua quebra de linha ele salva no BD normalmente mas quando entro na opção editar do formulário, ou seja, clico na tabela e uma função popula todos os campos do formulário, minha aplicação não consegue popular o textarea devido ao texto ter quebra de linha no BD, se o texto for contínuo, ok, popula normalmente mas se tiver com quebra de linha não popula, ex.:

Este texto possui essa primeira linha aqui.
E possui esta segunda linha aqui.

E pode ocorrer de ter uma terceira linha aqui, pois poderá ser um texto copiado de um e-mail por exemplo.

Por favor, se alguém tiver um solução, minha aplicação é WEB desenvolvida em NodeJS, Javascript e uso o layout AdminLTE3 com Bootstrap.

Informações adicionais:
Meu campo na tabela referente a este textarea é do tipo varchar (já tentei mudar para TEXT), aqui como esta o texto no BD:
image

Aqui está o trecho do código que popula meu elemento:
document.getElementById('observacao_operacao_EDIT').value = '<%= row.observacao_operacao %>';

Aqui está meu elemento textarea que deveria ser populado:

Ao depurar o código, qual valor vem em: row.observacao_operacao ? Veja se está vindo \n para as quebras de linha.

Lucas, veja que a informação está vindo conforme esta no BD com quebra de linha, porém não popula os campos, eu até coloquei um alert('<%= row.observacao_operacao %>') ali já no inicio pra ver, e quando o texto está com quebra o alert não chega nem ser disparado, se o texto for continuo ai tudo rola direitinho:

To achando que o problema não é nem no textarea, o problema está no <%= row.observacao_operacao %>, engraçado que pra popular a tabela está normal mas se usar ele dentro ai da função do botão editar e se tiver quebra de linha da erro, o alert nem dispara.

O probema é que fazer o alert dessa forma, vai causar erro de sintaxe quando ele for executado. E acredito que algo semelhante esteja causando o mesmo problema ao setar o value do textarea no JS.

Deve está ligado ao uso desse tipo de expressão: <%= row.observacao_operacao %>, pois isso vai transformar o texto vindo na variável como um conteúdo da página e soh depois o JS será executado.

Vc conseguiria usar a expressão <%= row.observacao_operacao %> diretamente no textarea assim?

<textarea id="observacao_operacao_EDIT">
    <%= row.observacao_operacao %>
</textarea>

Sim, se eu colocar diretamente no textarea carrega perfeitamente (acabei de testar aqui).

O problema é que meu formulário fica num modal e este modal abre quando eu clico numa linha da minha tabela executando assim aquela função onClick que carrega os campos da linha clicada (este botão está dentro de um forEach que carrega o array na tabela), mas estranho cara que funciona tudo certinho e só da erro quando o texto tem quebra de linha, será que tem alguma alternativa sem alterar tudo? tenho mais 8 telas desta forma, estou procurando aqui mas até agora não encontrei nada.

Como eu disse, o problema é que causa erro de sintaxe no JS quando há quebra de linha (vc pode ver na imagem que vc mandou).

Faz um teste (bem tosco, mas eh uma tentativa):

document.getElementById('observacao_operacao_EDIT').value = new String(`<%= row.observacao_operacao %>`).replace(/\n/g, '\n');

Ou melhor:

document.getElementById('observacao_operacao_EDIT').value = `<%= row.observacao_operacao %>`;
1 Curtida

Lucas… vc é fera mesmo cara, muito obrigado, deu certo! show de bola, obrigado mesmo.

1 Curtida
//