Uat
Uat

Reputation: 3

Cancel submit jquery

This is a part of the code from a form requesting data to check if the email alredy exist. The thing is, the program is supposed to return 0 if there is no any mail like this. It dont work properly, because the program keep sending the data, even if the mail is not correct.

If you want more info, or i am missing something let me know. Thanks in advance.

$(document).ready(function () {
    $("#enviar").click(function(e)  {
        e.preventDefault();
        var error = false;
        consulta = $("#email2").val();
        $.ajax({
            type: "POST",
            url: "compruebaEmail.php",
            data: "b="+consulta,
            dataType: "html",
            error: function(){
                alert("error petición ajax");
            },
            success: function(data){  
                if(data==0){
                    $("#error").html("Email  incorrecto");
                    error = false;
                }else{
                    $("form").unbind('submit').submit();
                }
            }
        }); 
        if (error){     
          return false;   
        }
    });
});

And here is my compruebaEmail.php

<?php require_once('connections/vinoteca.php'); ?>


<?php

    mysql_select_db($database_vinoteca, $vinoteca);

      $user = $_POST['b'];

      if(!empty($user)) {
            comprobar($user);
      }

      function comprobar($b) {


            $sql = mysql_query("SELECT * FROM usuarios WHERE email = '".$b."'");

            $contar = mysql_num_rows($sql);

            if($contar == 0){
                  echo 0;
            }else{
                  echo 1;
            }
      }     
?>

And here goes the POST

<form method="POST" name="form1" action="validarUsu.php">
    <div class="row">
             <span class="center">Email</span>
        </div>
    <div class="row">   
         <input type="text" name="email" id="email2" value="" size="32" />          
    </div>


    <div class="row">
        <span class="center">Contrase&ntilde;a</span>       
    </div>
    <div class="row">
        <input type="password" name="password"   id="id2" value="" size="32" />
            </div>

     <div class="row">
               <span id="error"> </span> 
    </div>

    <div class="row">
        <input type="submit" value="Acceder" id="enviar" size="20">
    </div>

    <div class="row">
        <a href="recuperarPassword.php">Recuperar contrase&ntilde;a</a>
    </div>
 </form>

Upvotes: 0

Views: 150

Answers (2)

Cr3aHal0
Cr3aHal0

Reputation: 809

If all you want is canceling the submitting event, then :

Either :

1 - Add the event arg to your click handler :

$("#enviar").click(function(event){ 

2 - use event.preventDefault(); when you want to cancel the submit message :)

or change the "return false;" location so that it will be triggered in the "click" handler scope and note the "success" scope e.g with a boolean that would represent if there is an error (EDIT : that is Styphon' solution)

Documentation here : http://api.jquery.com/event.preventdefault/

Upvotes: 0

Styphon
Styphon

Reputation: 10447

The problem is you're returning false from your Ajax function. You need to return false from your click function. Give this a try:

$("#enviar").click(function() {
    var error = false;
    consulta = $("#email2").val();
    $.ajax({
        type: "POST",
        url: "compruebaEmail.php",
        data: "b="+consulta,
        dataType: "html",
        error: function(){
            alert("error petición ajax");
        },
        success: function(data){  
            if(data==0){
                $("#error").html("Email  incorrecto");
                error = true;
            }
        }
    }); 
    if (error)
        return false;   
});

Upvotes: 1

Related Questions