Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>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.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();
}
});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?
Bom, já que não serão necessárias quebras de linha, você pode limpar as quebras pelo php:
$Conteudo = trim(str_replace("\r\n","",$_POST['textarea']));
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.
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?
Então mikael !
Estranho mesmo, mas quando eu uso o mouse não acontece não, só quando do o enter mesmo.
Assim será que funciona?
$(document).keypress(function(e) {
if ( e.which == 13 ) {
document.getElementById("ajax_form").submit();
}
});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.
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;
}
});O return false deu certinho mikael.php.
Obrigado pela força se precisa de nós estamos ai, pode conta comigo.
Grande Abraço.
Forte abraço Damon!
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
se alguém tiver alguma ideia