2009-12-14 5 views
4
$(document).ready(function() { 

    $('#commentForm').submit(function(){ 

     return $('input[type=text], textarea').each(function(index){ 

      if($(this).attr('value') == ""){ 
       alert(msgHash[$(this).attr('id')]); 
       return false; 

      }else{ 

       if(!$(this).attr('value').match(validateHash[$(this).attr('id')])){ 
        //Do nothing 
        alert(msgOnError[$(this).attr('id')]); 
        return false; 
       } 
      } 
     }); 

     return true; 
    }); 
}); 

Ici msgOnError, msgHash et msgHash sont carte que j'utiliser pour obtenir des messages pour chaque zone de texte avec ID particulier Malheureusement chaque méthode ne retourne pas faux pour annuler la soumission du formulaire. Qu'est-ce que je fais mal ?? Je suis nouveau à jQuery, mercijQuery chaque méthode ne retourne pas la valeur

Répondre

13

Oui, c'est exactement comment each fonctionne. Comme il s'agit en fait d'une boucle qui appelle votre fonction anonyme à chaque itération, en quittant ces fonctions, elle ne quittera pas la fonction d'appel également. Renvoyer vrai et faux ici, correspond en fait aux continue et break de la boucle for, de manière réciproque.

Vous allez devoir définir un indicateur booléen, return false (break), puis retourner la valeur de votre drapeau booléen après la each

+0

C'est vrai David. Je l'ai fait fonctionner en plaçant simplement une variable booléenne dans le $ ('input [type = text], textarea'). Chaque méthode et a également enlevé le mot-clé de retour. Plus tard à l'intérieur du $ ('# commentForm') j'ai vérifié le booléen et décide si le formulaire devrait être soumis. Fonctionne bien. Merci encore David .. – nash

+2

Je suis content que vous ayez des choses qui marchent. Si vous êtes satisfait d'une réponse, vous pouvez cocher le bouton Accepter pour cette réponse, pour la marquer comme réponse acceptée. Cela montre que les autres utilisateurs savent que la question a été résolue. –

Questions connexes