How do I send an email without completing the form

-2

I wanted to know if I have an e-mail shot without making the action call of my form, because it has 4 steps, and in the process from 1st to 2nd step I want to e-mail the fields that have been filled, without finalizing my form, because if I use submit calling the action it ends my form and returns to the 1st step, instead of moving to the 2nd step. I just need to click the button to get the data typed and send it by email without giving me any feedback, I already tried everything I know

    
asked by anonymous 11.05.2018 / 14:51

1 answer

0

For each step create a div

  • first div <div class="form1-group" id="passo1">
  • second div <div class="form2-group" id="passo2">
  • third div <div class="form3-group" id="passo3">
  • fourth div <div class="form4-group" id="passo4">

CSS

//oculta as divs
#passo2,#passo3,#passo4{
    display:none;
}
input{
    width:220px;
}

Form Example

<form id="regForm" action="recebe-do-form.php" method="post">
    <div class="form1-group" id="passo1">
      <p><input minlength="5" type="text" class="form-control" id="nome" name="nome" placeholder="Nome Completo*" /></p>
      <p><input type="email" class="form-control" id="email" name="email" placeholder="Email Válido*" /></p>
      <p><input type="text" class="form-control" id="celular" name="celular" placeholder="Telefone" /></p>
      <p><input type="text" class="form-control" id="sobre" name="sobre" placeholder="Como ficou sabendo sobre festas?" /></p>
      <button type="button" id="form1" onclick="validate(id)" /> Próximo</button>
    </div>

    <div class="form2-group" id="passo2">
      <input type="text" name="idade" value="" id="idade" placeholder="Idade" />
      <br />
      <input type="text" name="nascimento" id="nascimento" value="" placeholder="Data nascimento" />
      <br />
      <button type="button" id="form2" onclick="validate(id)" /> Próximo</button>

   </div>

   <div class="form3-group" id="passo3">
      <input type="text" name="estado" value="" id="estado" placeholder="Estado" />
      <br />
      <input type="text" name="cidade" value="" id="cidade" placeholder="Cidade" />
      <br />
      <button type="button" id="form3" onclick="validate(id)" /> Próximo</button>

   </div>

   <div class="form4-group" id="passo4">
      <input type="text" name="cargo" value="" id="cargo" placeholder="Cargo" />
      <br />
      <input type="text" name="empresa" value="" id="empresa" placeholder="Empresa" />
      <br />

      <button type="button" id="form4" onclick="validate(id)" /> Enviar</button>
   </div>

</form>
  

Each group of div contains a button that calls the function validate(id) passing the value of id

     

The validate(id) function, according to id passed performs the desired actions, such as validate name, email and whatever else you want. Look at the comments in the code.

function validate(id){
    /*
    Recupera o id do button clicado e
    verifica se o nome contém pelo menos 5 caracteres
    valida email
    e se estiverem ok, executa o ajax para enviar o email
    pode validar os outros campos dessa div (celular e sobre) se assim o desejar
    */
    if (id=="form1"){
        var strNome = document.getElementById("nome").value;
        if (strNome.length<5){
           $( '#nome' ).css( "border", "2px solid #e74c3c" );
           $( '#nome' ).val( "" );
           $( '#nome' ).attr("placeholder", "Minimo de 5 caracteres!");
           $( '#nome' ).focus();
           return false;
        }else{
           $( '#nome' ).css( "border", "2px solid green" );
        }

        var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
        if(!filter.test(document.getElementById("email").value)){
           $( '#email' ).css( "border", "2px solid #e74c3c" );
           $( '#email' ).focus();
           return false;
        }

        //valores do primeiro passo para passar via email
        var nome = $("#nome").val();
        var email = $("#email").val();
        var celular = $("#celular").val();
        var sobre = $("#sobre").val();

        var dataString = {"nome":nome,"email":email,"celular":celular,"sobre":sobre };

            $.ajax({
                url: 'enviarMail.php',
                type: 'POST',
                data: dataString,
                success: function(data){
                    //$("#resultado").html("Dados enviados com sucesso "+data);
                }
            });//ajax 
    }

     //neste estou validando a data de nascimento
     if (id=="form2"){
         var strNascimento = document.getElementById("nascimento").value;
         var patternData = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
            if(!patternData.test(strNascimento)){
                $( '#nascimento' ).val( "" );
                $( '#nascimento' ).attr("placeholder", "dd/mm/yyyy");
                $( '#nascimento' ).css( "border", "2px solid #e74c3c" );
                return false;
            }
    }

    //aqui envia o formulário
    if (id=="form4"){
        $("#regForm").submit();
    }

    /*
    recupera o ultimo caractere da string id, soma 1,
    esconde todas as divs e mostra a div seguinte a atual.
    */
    var res = id.charAt(id.length-1);
    res=parseInt(res)+1;
    //esconde todas
    $('div[id^="passo"]').hide();
    //mostra a proxima
    $('#passo'+res).show();


} 

sendmail.php

/******* CODIGO EMAIL *******/

/* Uma dica para envio de emails
Baixe os arquivos  PHPMailerAutoload.php - class.smtp.php -  class.phpmailer.php
em github - https://github.com/PHPMailer/PHPMailer/tree/5.2-stable
Crie uma pasta  PHPMailer-master no mesmo diretório da sua aplicação PHP e 
publique os arquivos baixados nesta pasta (PHPMailer-master).
*/


$nome = $_POST['nome'];

$email = $_POST['email'];

$celular = $_POST['celular'];

$sobre = $_POST['sobre'];

//email Destinatario
$emailDest = "[email protected]";

$email = Trim(str_replace("'","",$email));


require_once 'PHPMailer-master/PHPMailerAutoload.php';

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = 'smtp.dominio.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->IsHTML(true);
$mail->Username = '[email protected]';
$mail->Password = 'senha';

//$mail->SMTPSecure = false; //Diz que nao tem tls/ssl
$mail->SMTPSecure = 'tls';  
//$mail->SMTPAutoTLS = false; //Diz que nao tem tls/ssl

//$mail->SMTPDebug = 2; //Mostra os bugs

//E-mail remetente
$mail->From = $email;

//Nome do remetente
$mail->FromName = $nome;

//Assunto da mensagem
$mail->Subject = "teste mail";

//Corpo da mensagem
$mail->Body = "Celular ".$celular." - Mensagem ".$sobre;

//Corpo da mensagem em texto
//$mail->AltBody = 'Conteudo do e-mail em texto';


//Destinatario 
$mail->AddAddress ($emailDest);

$mail->Send();
    
14.05.2018 / 03:44