2009-11-20 2 views
5

im faire une validation de formulaire et je veux valider les champs de saisie lorsque « le soumettre » en cas d'erreur Im en utilisant jquery.scrollTo aller à l'erreur:annuler une soumission dans jquery?

$('#form_inscripcion').submit(function() { 
    //se traen todos los inputs del formulario 
    var $inputs = $('#form_inscripcion :input'); 

    $inputs.each(function() { 
     var encontro_error = validar($(this)); //uses dependence ok 
     if (encontro_error){ 
      $.scrollTo('input#'+$(this).attr('id'), 800); //go to error 
      return false; // dont submit!... but seems not enter here :(
     } 
    }); 

}); 

Le problème est, en cas d'erreur retourné ne marche pas annuler la soumettre , ne lance pas la ligne return false;.

Il fonctionne sur OK lorsque

<form id="form_inscripcion" name="form" method="post" action="some" onsubmit="return false"> 

Mais alors, ne soumet jamais. J'espère que vous me comprenez :) merci :)

Répondre

12

J'utilise e.preventDefault() comme ceci:

$('#form_inscripcion').submit(function(e) { 
    //se traen todos los inputs del formulario 
    var $inputs = $('#form_inscripcion :input'); 

    $inputs.each(function() { 
     var encontro_error = validar($(this)); //uses dependence ok 
     if (encontro_error){ 
      $.scrollTo('input#'+$(this).attr('id'), 800); //go to error 
      e.preventDefault(); // Cancel the submit 
      return false; // Exit the .each loop 
     } 
    }); 
}); 

juste être sûr de fournir le paramètre e à soumettre appel de fonction (première ligne dans le bloc de code).

6

Vous revenez de #each fonction, pas #submit. Faites quelque chose comme ceci:

$('#form_inscripcion').submit(function(e) { 
     //se traen todos los inputs del formulario 
     var $inputs = $('#form_inscripcion :input'); 
     var returnVal = true; 
     $inputs.each(function() { 
       var encontro_error = validar($(this)); //uses dependence ok 
       if (encontro_error){ 
         $.scrollTo('input#'+$(this).attr('id'), 800); //go to error 
         returnVal = false; 
         return false; // returning false here breaks out of $.each. 
       } 
     }); 
     return returnVal; 
}); 

Vous pouvez également faire e.preventDefault() pour arrêter la soumission du formulaire.

Questions connexes