Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AlexandreHenrique

textarea com quebra de linha <br>

Recommended Posts

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>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

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;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;"

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por noxer
      Boa tarde, Preciso atribuir o valor de uma textarea para uma var e a exibir em um p. Fiz bem simples usando js/jquery mas agora preciso fazer em php.
       
      Ja tentei $variavel = $_POST['nomedocampo']; mas não obtive resultado
       
       
      Segue o trecho em js
      <textarea class="wapf-input" ></textarea> <button class="sendPDF">PDF</button> <p class="geratedPDF"></p>  
      $('.sendPDF').on('click', toPDF) function toPDF() { var textareaValue = $('.wapf-input').val() $('.geratedPDF').text(textareaValue) }
    • Por pandinha_000
      Olá,
      Estou desenvolvendo um código em c++ utilizando manipulação de arquivos .txt (não por ponteiros), e gostaria de saber como fazer para que o algoritmo "pule" a primeira linha em branco do meu arquivo e passe já para a próxima, com dados válidos (na leitura). A propósito, existe a possibilidade de, ao escrever no arquivo, essa primeira linha em branco não exista?
      Desde já agradeço.
    • Por Hashira do Vento
      O exercício pede o que eu faça um código com uma matriz, onde eu peça uma linha qualquer ao usuário, e nela será feito a soma ou média dos elementos contidos.
      O problema é na hora da decisão do usuário na hora de escolher entre média ou soma, escrevendo a letra inicial de uma dessa palavras em maiúsculo. O "If" simplesmente não funciona, e eu acho que seja essa minha dificuldade, pois quando tirei o if, a soma funcionou normalmente (com o código atual a soma fica igual a zero no printf final). E sim, eu pesquisei a fundo sobre o tipo char, mas mesmo assim não consegui resposta alguma para a solução do meu problema :/
      Segue o código:
      Obs: Claramente, o meu código não está terminado (ainda falta pôr a parte da média), a partir do momento em que eu solucionar esse problema principal, creio que conseguirei finalizá-lo sem mais contratempos.
       
      #include <stdio.h> #include <stdlib.h> #include <locale> int main (void){ setlocale (LC_ALL, "Portuguese"); float M [2][2], media; int lin, x, soma1, soma2; char op[5]; printf ("Preencha a matriz: \n"); for (int l = 0; l<2; l++) { //linha for (int c = 0; c<2; c++ ) { //coluna scanf ("%f", &M[l][c]); } } printf ("Que operação você quer? S ou M?\n"); //Entrada do char, escolha da operação scanf ("%s", op); printf ("Em qual linha da matriz a operação deve ser realizada?\n"); scanf ("%d", &x); for (int l = x; l==x; l++) { for (int c = 0; c<2; c++ ){ printf ("%f \n", M[l][c]);//só mostrando os numeros da linha (ignore) if (op=="S") //tenho quase certeza que o problema se encontra aqui soma1= M[l][c]+soma1; } } printf ("O resultado da soma deu %d", soma1); //e na hora de mostrar a soma, ela sempre aparece como zero }
    • Por JurisCode
      Eu tenho um problema de CSS que está me queimando a pestana.
       
      Peguei uma template com um CSS que é verdadeiro ninho de rato, mas de boa, decidi colocar todos os tributos css na própria tag do form. Deu certo em parte porque os campos ficaram do tamanho, cor e outros atributos, mas essas duas caixinhas, nem com todo o espaço do mundo eu consegui colocar elas na mesma linha:
      <div style="display: visible; color: #FFFFFF; border: none; background: #3C3C3C; width: 100%; white-space:nowrap;"> <center>     <input type="text" style="width:120px; height: 20px; padding:1px 1px; background:#DDDDDD; color:#3C3C3C; margin: 0px 0px 0px 0px;"> <input type="password" style="width:120px; height: 20px; padding:1px 1px; background:#DDDDDD; color:#3C3C3C; margin: 0px 0px 0px 0px;"> </center>  </div> nada de mais, em qqr outra página fica em uma única linha, mas nesta página não. Como que anula isso. Nem o nowrap deu jeito.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.