Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom pessoal, primeiramente os desejo uma boa noite.
Estou precisando muito da ajuda de vocês...
Tenho um formulário de contato, validado com o plugin jQuery Validate, e então estou sem a função de enviar o e-mail, pois não sei incluí-lo junto com o plugin.
Preciso que, se todos os dados estiverem corretos, o plugin "avisar" ao script php, e o php enviar o e-mail corretamente.
Infelizmente eu não consigo criar essa função...
Pesquisei muito desde a semana passada sobre isso, modifiquei o plugin mas em cada modificação resultava em mais um erro.
Vou postar o plugin que uso para validar o formulário:
Agora aqui está o que utilizo nas tags <head> do meu documento onde está o formulário:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#contato").validate();
});
</script>
O formulário de contato:
<form id="contato" name="contato" method="post" action="">
<ol>
<li>
<label for="nome"><em>Nome (Obrigatório, mínimo de 4 caracteres.)</em></label>
<input type="text" id="nome" name="nome" class="required texto" minlength="4" />
</li>
<li>
<label for="email"><em>E-mail (Obrigatório)</em></label>
<input type="text" id="email" name="email" class="required email texto" />
</li>
<li>
<label for="assunto"><em>Assunto (Obrigatório)</em></label>
<input type="text" id="assunto" name="assunto" class="required texto" />
</li>
<li>
<label for="mensagem"><em>Mensagem<br />(Obrigatório, mínimo de 10 caracteres.)</em></label>
<textarea id="mensagem" name="mensagem" class="required texto" minlength="10"></textarea>
</li>
<li class="button">
<input type="image" src="images/submit.png" name="submit" id="submit" />
<div class="clr"></div> //essa div é somente um elemento css.
</li>
</ol>
</form>
Eu estou com um arquivo php que criei para enviar o e-mail.
O php envia 2 e-mails:
um para o administrador, e outro para o cliente ($_POST):
<?
header('Content-Type: text/html; charset=iso 8859-1');
$nome = $_POST["nome"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];
$data = date("d/m/y");
$ip = $_SERVER['REMOTE_ADDR'];
$hora = date("H:i:s");
$linguagem = "\nContent-type: text/html";
$site = "contato@homeprodutos.com";
$titulo = "Contato Home Produtos";
$msg = "<html>
<head>
</head>
<body>
<img src='http://www.homeprodutos.com/images/logo.png' />
<p>
<br />
Olá, <strong>$nome</strong>.
<br /><br />
Sua mensagem foi enviada com sucesso sobre <strong>\"$assunto\"</strong> e em breve será retornada.<br />
<fieldset>
<legend>Mensagem:</legend>
$mensagem
</fieldset>
<br />
Agradecemos o seu contato.
<br /><br />
Atenciosamente,<br />
Equipe <a href='http://www.homeprodutos.com'> Home Produtos </a>
</p>
</body>
</html>";
mail("contato@homeprodutos.com", "$assunto", "Nome: $nome\nData: $data\nIp: $ip\nHora: $hora\nE-mail: $email\nMensagem: $mensagem", "From: $email")){
mail("$email", "$titulo", "$msg", "From: $site".$linguagem)){
?>
Também não consegui incluir a mensagem de sucesso no script.
A mensagem seria incluida no PHP ou no plugin?
Bem... É isso.
Obrigado pela sua atenção amigo.
Abraços.
eu uso um form de contato em php q n precisa de AJAX..
olha só:
<?php
//pega as variaveis por POST(assim esta o post do meu site, altere essas variaveis de acordo com o seu..
$nome = $_POST["nome"];
$site = $_POST["site"];
$email = $_POST["email"];
$fone = $_POST["fone"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];
global $email; //função para validar a variável $email no script todo
$data = date("d/m/y"); //função para pegar a data de envio do e-mail
$ip = $_SERVER['REMOTE_ADDR']; //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT']; //função para pegar o navegador do visitante//aqui envia o e-mail para você
mail ("seu_email@provedor.com", //email aonde o php vai enviar os dados do form
"$assunto",
"Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nSite: $site\nE-mail: $email\nTelefone: $fone\n\nMensagem: $mensagem",
"From: $email"
);
//aqui são as configurações para enviar o e-mail para o visitante
$site = "email_recipiente@provedor.com";//o e-mail que aparecerá na caixa postal do visitante
$titulo = "Titulo Messagem";//titulo da mensagem enviada para o visitante
$msg = "$nome, obrigado por entrar em contato conosco, em breve entraremos em contato";
//aqui envia o e-mail de auto-resposta para o visitante
mail("$email",
"$titulo",
"$msg",
"From: $site"
);
echo "<p align=center>$nome, sua mensagem foi enviada com sucesso!</p>";
echo "<p align=center>Estaremos retornando em breve.</p>";
?>
esta é um pagina de resposta, então coloque esse codigo em outro arquivo e envie os dados do form para ela...
facim, entendeu??
opa.. deixa eu ver se entendi.. tu quer que todos os campos sejam preenchidos antes de enviar o e-mail, correto?
se for isso beleza... o teu javascript está correto, pois está apontando pra id contato..
o teu form está sem action, tu tem que apontar a action pro arquivo php que enviará o e-mail..
não analisei o teu script de envio, mas acredito que esteja correto.
tenta alguma coisa aí e nos dá o retorno..
abraços.
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.validate.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#formulario_contato").validate({
rules: {
nome: "required",
email:{
required: true,
email: true
},
},
messages:{
nome:{ required: 'Campo obrigatório'}
},
submitHandler: function(form) {
var dados = $("#formulario_contato").serialize();
$.ajax( {
type: "POST",
url: "processa_formulario.php",
data: "do=cadastrar&"+decodeURIComponent(dados),
beforeSend: function() {
$("#form_contato").hide();
$("#retorno").show();
$("#retorno").html('<br /><img src="media/images/carregando.gif" /> Enviando...<br />');
},
success: function(txt) {
$("#retorno").html(txt);
},
error: function(txt) {
alert('Erro no ajax');
}});
return false;
}
});
});
</script>
<div id="retorno"></div>
<div id="form_contato">
<form id="formulario_contato" name="formulario_contato" method="post" action="">
<ol>
<li>
<label for="nome"><em>Nome (Obrigatório, mínimo de 4 caracteres.)</em></label>
<input type="text" id="nome" name="nome" class="required texto" minlength="4" />
</li>
<li>
<label for="email"><em>E-mail (Obrigatório)</em></label>
<input type="text" id="email" name="email" class="required email texto" />
</li>
<li>
<label for="assunto"><em>Assunto (Obrigatório)</em></label>
<input type="text" id="assunto" name="assunto" class="required texto" />
</li>
<li>
<label for="mensagem"><em>Mensagem<br />(Obrigatório, mínimo de 10 caracteres.)</em></label>
<textarea id="mensagem" name="mensagem" class="required texto" minlength="10"></textarea>
</li>
<li class="button">
<input type="image" src="images/submit.png" name="submit" id="submit" />
<div class="clr"></div> //essa div é somente um elemento css.
</li>
</ol>
</form>
</div>Opa, obrigado pelas respostas.
Certamente eu necessitava incluir ajax.
Utilizei a função submitHandler como o goruks citou, e então configurei para enviar o e-mail com as funções de outra página php, o arquivo enviar.php.
Além de estar com uma elegante validação, ficou perfeito, graças a ajuda de vocês.
Muito obrigado pessoal, espero poder ajudá-los também qualquer dia...
Caso quiser ver o formulário, aqui está a URL:
Obrigado novamente pessoal.
Abraços.
Olá mokololo,
primeiramente o plugin colocado da forma que você colocou fica bastante limitado, o que acha de usar Ajax neste script?