2011-10-28 3 views
0

Ce que je fais est très simple. Je veux juste un formulaire de base, mais s'il est valide même s'il est suspendu et agit comme si le champ était valide, même si ce n'est pas le cas. Par exemple, si je tape [email protected] pour l'adresse e-mail, et qu'elle vérifie qu'elle est valide. Mais si je reviens et que je mets un e-mail qui existe, et que je devrais retourner false (et le fait), le statut ne change pas. Cela s'applique également à la méthode equalTo.La validation du formulaire jQuery échoue à continuer la validation

Il est vraiment frusterating:/

Voici la JS [noms] raccourcies:

$('#register').validate({ 
    rules: { 
     scq: { 
      required: true 
     }, 
     email: { 
      required: true, 
      remote: { 
       url: 'ajax.php', 
       type: 'post', 
       async: false, 
       data: { 
        type: 'email', 
        email: function() { 
         return $('#email').val() 
        } 
       } 
      } 
     }, 
     email2: { 
      equalTo: '#email' 
     }, 
     pass: { 
      required: true 
     }, 
     pass2: { 
      equalTo: '#pass' 
     } 
    }, 
    success: function(label) { 
     label.html(' ').addClass('success'); 
    } 
}); 

Le PHP pour ajax.php:

if($row['id']) $success = true; 
else $success = false; 

echo json_encode($success); 

Répondre

1

... si je retour et mettre dans un e-mail qui existe, et devrait retourner faux (et fait) le statut ne change pas.

C'est parce que vous ajoutez manuellement une classe appelée .success dans le gestionnaire success:. Le problème est que rien ne supprime cette classe si ou quand la validation échoue par la suite.

Vous pouvez simplement laisser le plugin automatically apply/remove the appropriate class for success. (Il le fait déjà pour la classe d'erreur.) Ajouter le gestionnaire validClass: ...

$('#register').validate({ 
    validClass: 'success', 
    rules: { // etc. etc. 

Et puis retirez .addClass('success') de votre gestionnaire success:.


Je ne suis pas tout à fait sûr où correspond à votre variable $success ou si elle fait partie du problème.

Cependant, to simply test if validation has passed or failed, vous vérifiez juste pour voir si .valid() est vrai ou faux ...

if ($('#register').valid() == true) { alert('passed validation'); }; 

if ($('#register').valid() == false) { alert('failed validation'); }; 

J'espère que cela aide.

+1

Cela a fonctionné btw, et j'ai réellement compris cela avant que j'ai vu votre commentaire. Augmenter cela pour que les gens puissent le voir dans le futur! –

Questions connexes