Ir para conteúdo

POWERED BY:

Arquivado

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

mzaidan

Variável javascript receber texto com quebra de linha

Recommended Posts

Prezados, tenho o seguinte código:

<script type="text/javascript" language="javascript">
$(function($) {
	// Quando o formulário for enviado, essa função é chamada
	$("#formulario").submit(function() {
		// Colocamos os valores de cada campo em uma váriavel para facilitar a manipulação
		var nome = $("#nome").val();
		var email = $("#email").val();
		var mensagem = $("#mensagem").val();
		// Exibe mensagem de carregamento
		$("#status").html("<img src='loader.gif' alt='Enviando' />  Enviando...");
		// Fazemos a requisão ajax com o arquivo envia.php e enviamos os valores de cada campo através do método POST
		$.post('envia.php', {nome: nome, email: email, mensagem: mensagem }, function(resposta) {
				// Quando terminada a requisição
				// Exibe a div status
				$("#status").slideDown();
				// Se a resposta é um erro
				if (resposta != false) {
					// Exibe o erro na div
					$("#status").html(resposta);
				} 
				// Se resposta for false, ou seja, não ocorreu nenhum erro
				else {
					// Exibe mensagem de sucesso
					$("#status").html("Mensagem enviada com sucesso!");
					// Coloca a mensagem no div de mensagens
					$("#valeu").prepend("Você falou:<br><br><div class='balaodialogo' align='justify'>  <font color='#000'>" + mensagem + 

"</font></div><br><br>");
					// Limpando todos os campos
					$("#nome").val("");
					$("#email").val("");
					$("#mensagem").val("");
				}
		});
	});
});
</script>

Eu envio um texto, faço o tratamento ajax e exibo na pagina o que foi digitado e enviado.

Pois bem, funcionalidade está ok.

Acontece que, se uma pessoa escrever um texto com quebra de linha, a mensagem é exibido em uma unica linha.

Exemplo:

Se eu escrever:

akakakkaka

akakakakakak

ajakakakakak

 

É exibido:

akakakkaka akakakakakak ajakakakakak

 

Como eu poderia resolver esse problema?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso será corrigido no arquivo envia.php.

 

Com a função nl2br()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blz, mas eu ja to fazendo um tratamento aqui.

 

$mensagem = trim(addslashes($_POST["mensagem"]));

 

Quando tento colocar o

$mensagem = nl2br(trim(addslashes($_POST["mensagem"])));

 

Da erro.

 

O que posso fazer?

 

Grato.

 

Ps. No texto é gravado mensagens com aspas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tb tentei só o

$mensagem = nl2br($_POST["mensagem"]);

 

E continuou em linha única.

 

Detalhe que na hora da exibição normal ta exibindo correto.

 

Só na hora de mostrar o que foi obtido com o ajax que não.

 

Creio eu que deveria colocar alguma coisa aqui:

 

var mensagem = $("#mensagem").val()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja mudei aqui.

Deu um erro de boolean.

 

Mas, pelo que tem no envia.php

Acho que o valor de mensagem está sendo pegado da variavel javascript.

envia.php:

<?php
// Incluimos o arquivo de conexão
require_once("conn.php");
// Recuperamos os valores dos campos através do método POST
$nome = trim(addslashes($_POST["nome"]));
$email = $_POST["email"];
$mensagem = trim(addslashes($_POST["mensagem"]));

// Verifica se o nome foi preenchido
if (empty($mensagem)) {
	echo "Escreva uma mensagem";
} 
// Se não houver nenhum erro
else {
	// Inserimos no banco de dados
	$query = mysql_query("INSERT INTO mensagens VALUES ('', '".$nome."', '".$email."', '".$mensagem."')");

		

	// Se inserido com sucesso
	if ($query) {
		echo false;

     
		mail($to, $subject, $message, $headers);
	} 
	// Se houver algum erro ao inserir
	else {
		echo "Não foi possível inserir a mensagem no momento.";
	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu preciso é que a variavel javascript receba o valor do textarea

<form id="formulario" action="javascript:func()" method="post">
	             <input name="nome" type="hidden" id="nome" size="35" value="<? echo $id_user; ?>">
	            <input name="email" type="hidden" id="email" size="35" value="<? echo $id; ?>">
	    	    <textarea name="mensagem" id="mensagem" cols=60 rows=10 required/></textarea>
<script type="text/javascript" language="javascript">
$(function($) {
	// Quando o formulário for enviado, essa função é chamada
	$("#formulario").submit(function() {
		// Colocamos os valores de cada campo em uma váriavel para facilitar a manipulação
		var nome = $("#nome").val();
		var email = $("#email").val();
		var mensagem = $.trim($("#mensagem").val());
		// Exibe mensagem de carregamento
		$("#status").html("<img src='loader.gif' alt='Enviando' />  Enviando...");
		// Fazemos a requisão ajax com o arquivo envia.php e enviamos os valores de cada campo através do método POST
		$.post('envia.php', {nome: nome, email: email, mensagem: mensagem }, function(resposta) {
				// Quando terminada a requisição
				// Exibe a div status
				$("#status").slideDown();
				// Se a resposta é um erro
				if (resposta != false) {
					// Exibe o erro na div
					$("#status").html(resposta);
				} 
				// Se resposta for false, ou seja, não ocorreu nenhum erro
				else {
					// Exibe mensagem de sucesso
					$("#status").html("Mensagem enviada com sucesso!");
					// Coloca a mensagem no div de mensagens
					$("#valeu").prepend("Você falou:<br><br><div class='balaodialogo' align='justify'>  <font color='#000'>" + mensagem + 

"\n</font></div><br><br>");
					// Limpando todos os campos
					$("#nome").val("");
					$("#email").val("");
					$("#mensagem").val("");
				}
		});
	});
});
</script>

var mensagem = $.trim($("#mensagem").val());

 

ai já estou recebendo o valor, todavia não vem formatado corretamente, com quebra de linhas.

 

Existe alguma função em javascript que faça isso?

TipO:

http://devilmaycode.altervista.org/jquery-convert-line-breaks-to-br-nl2br-equivalent/

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites
mail($to, $subject, nl2br($message), $headers);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim:

<script>
  function convert(){
   document.getElementById('html').innerHTML = nl2br(document.getElementById('text').value);
 }

 function nl2br (str, is_xhtml) {   
  var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';    
  return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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