Ir para conteúdo

Arquivado

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

Damon

Enviar mensagem usando o AJAX

Recommended Posts

Bom dia

 

Estou tentando enviar dados de uma textarea e gravar no banco via ajax.

 

Estou utilizando como referencia o tutorial do blog do William Bruno, peguei o código e adequei a minha necessidade,

o código esta inserido no banco perfeitamente, porem não esta limpando a textarea, coloquei mas algumas funções para

que na hora que o usuário teclasse o enter a mensagem seja envida sem precisar da ação do máuser, porem o ajax com estas

funções não esta funcionando ou seja não esta sendo inserido nada no banco.

 

Alguém pode me ajudar

<html>
	<head>
		<meta http-equiv="Content-Language" content="pt-br">
		<meta http-equiv="Content-Type" content="text/html"; charset= "ISO-8859-1">
		<link rel="stylesheet" type="text/css" href="css/escreve.css"/>
	
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
		<script type="text/javascript">
			jQuery(document).ready(function(){
				jQuery('#ajax_form').submit(function(){
				var dados = jQuery( this ).serialize();
 
					jQuery.ajax({
					type: "POST",
					url: "processa.php",//envia os dados que vão ser inserido no banco
					data: dados,
					success: function( data )
					{
						return false;
					}
			});
			
			return false;
		});
	});
	
	function stopEvent(event) {
				if (event.preventDefault) {
					event.preventDefault();
					event.stopPropagation();
				} 		
		else {
			event.returnValue = false;
			event.cancelBubble = true;
	}
}

	function areaEnvia(obj, evt) {
		var e = evt || event;
		var k = e.keyCode;
	
		if(k == 13) { //verifica se teclou enter
			if(!e.shiftKey) {
				if(obj.form)
				obj.form.submit();
					stopEvent(e);
		}
	}
}

$(document).ready(function(){
   $('#submit_form').click(function(){
       $('#ajax_form').submit();
   });
});
	
	</script>
</head>




<body onLoad="document#ajax_form.fmensagem.focus();">
	<div  id="tudo">
		<form method="post" action="" id="ajax_form" >
			<input type="hidden" name="acao" value="I"/>
			<input type="hidden" name="fnomecliente" value="<?php echo " $fnomecliente";?>">
			<div id="txtarea">	<textarea  placeholder ="Digite seu texto aqui." rows="2" name="fmensagem" cols="45"  onkeydown="areaEnvia(this, event);"></textarea><p></p>  </div>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
			<div id="enviar"><input  id ="botton"  type="submit" value="Enviar" name="B1" ></div>
			
			
		</form>

</body>
</html> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal já conseguir resolver a questão por que ele não estava limpando a textaria

no retorno da função eu mudei para o seguinte:

document.forms[0].reset();

Agora eu preciso colocar o evento que verifica se user aperto a tecla enter

ou seja eu preciso substituir esta função por algo semelhante no Ajax

function areaEnvia(obj, evt) {
     var e = evt || event;
     var k = e.keyCode;
	
     if(k == 13) { //verifica se teclou enter
     if(!e.shiftKey) {

     if(obj.form)
     obj.form.submit();
     stopEvent(e);
    }
}

se alguém tiver alguma ideia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera

 

Com a função keypress eu consigo verifica se user teclou o enter, agora eu preciso jogar a ação do form na hora que user tecla o ENTER, tipo

$(document).keypress(function(e) {
  if ( e.which == 13 ) {
    alert('Você apertou o ENTER');// 
     Aqui seria a ação do submit, porem já tentei varias coisas e ainda não deu certo!:/
     }
});

já tentei :

 $(function() {
    $(window).on('keydown', function(event) {
        if(event.which == 13) {
            doPost();
            return false;
        }
    });
}); 

já tentei também

$('.input').keypress(function (e) {
  if (e.which == 13) {
    $('#ajax_form').submit();
    return false;    
  }
}); 

Se alguém tiver mais algumas ideias vamos ajudar, notei que este TÓPICO está muito participativo, lembrem-se que outras pessoas futuramente podem ter a mesma duvida, e sem falar que quanto mais pessoas contribuir com ideias, mais rica a "nossa base de dados" (imasters) vai ficar. Então podem ficar a vontade para opinar sobre o assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se desta forma não funcionou, você pode pegar o botão submit do seu form e dar um click nele.

$(document).keypress(function(e) {
  if ( e.which == 13 ) {
    $( "#BotaoSubmit" ).click();
  }
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mikael.php

 

Verdade, não tinha pensado nisso, assim ele funcionou mais ele ainda da uma quebrada na linha pra baixo antes de enviar. Será tem como tira esta quebrada de linha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mikael.php

 

Não é bem isso que eu estava falando não, na hora de inserir ta normal entende inseri sem as quebra de linha,

eu estou falando mais da estética mesmo.... na hora que eu uso o comando " click() " no imput, no visual ele esta dando uma quebra de linha entende, é questão estética mesmo, o problema esta no código

 $(document).keypress(function(e) {
  if ( e.which == 13 ) {
    $( "#botton" ).click();
  }
});

e não no php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Damon,

 

Que estranho, isto não deveria acontecer.

Talvez seja alguma coisa com o CSS do botão.

 

Quando você clica com o mouse acontece o mesmo?

 

Edit: É no botão ou no conteúdo do textarea que da a quebra?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então mikael !

 

Estranho mesmo, mas quando eu uso o mouse não acontece não, só quando do o enter mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim não funciona, frame some da tela.

 

Ah desculpa eu esqueci sua pergunta

 

 

É no botão ou no conteúdo do textarea que da a quebra?

 

e na textarea.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então talvez possamos colocar um "return false;" para cancelarmos a função de quebra de linha no enter:

$(document).keypress(function(e) {
  if ( e.which == 13 ) {
    $( "#BotaoSubmit" ).click();
    return false;
  }
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

O return false deu certinho mikael.php.

Obrigado pela força se precisa de nós estamos ai, pode conta comigo.

 

Grande Abraço.

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.