Jump to content
Sign in to follow this  
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> 

Share this post


Link to post
Share on other 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

  • +1 1

Share this post


Link to post
Share on other 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.

Edited by Damon
  • +1 2

Share this post


Link to post
Share on other 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();
  }
});

Share this post


Link to post
Share on other 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?

Edited by Damon

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Edited by mikael.php

Share this post


Link to post
Share on other sites

Então mikael !

 

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

Share this post


Link to post
Share on other 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.

Edited by Damon

Share this post


Link to post
Share on other 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;
  }
});
  • +1 1

Share this post


Link to post
Share on other 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.

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.