2010-01-27 7 views
2

Je veux implémenter une fonctionnalité de changement de mot de passe de l'utilisateur. C'est essentiellement une forme avec trois champs. Les identifiants des trois entrées sont oldpassword, newPassword et newPasswordAgain.Jquery Ajax mot de passe de validation

Lorsque l'utilisateur a perdu le focus de l'entrée ancien mot de passe ou soumettre le formulaire, je veux vérifier par rapport à la base de données, pour voir si l'ancien mot de passe est correctement entré. Comment puis-je y parvenir en utilisant la validation jquery?

ajouter une règle personnalisée comme ceci:

  $.validator.addMethod("checkOldPass",function (value ,element) { 
      var validPass = false ; 
      $.post("/SMS/admin/users/checkOldPass.do" , {"empId":empId , "oldEmpPass":$.md5(value)},function (data) { 
        var msg = eval('('+data+')'); 
        if(msg.resultFlag == 1) { 
         validPass = true ; 

        } 
       }); 
       return validPass ; 
      } , "error!"); 

Mais le problème est, avant ma méthode post retourne un indicateur de résultat, la méthode déjà fini, donc je reçois toujours le message d'erreur. Je sais que la validation jquery a une méthode distante, mais je ne peux pas l'utiliser, car j'utilise le plugin struts2-json, mon résultat json encapsule toujours dans un objet, et la méthode distante nécessite un résultat booléen json. Je ne peux pas obtenir directement vrai ou faux du résultat.

Répondre

1

Vous pouvez utiliser l'utilisation $.ajax et définir async:false: http://api.jquery.com/jQuery.ajax/
Cela attendra l'appel pour terminer, bloquer votre page. Cela dit, je ne suis pas sûr que vous devriez utiliser JavaScript pour valider un mot de passe. C'est quelque chose que vous voulez généralement faire sur le serveur, et il n'a aucune sécurité de toute façon.

+0

Oui, il y a effectivement une validation côté serveur dans mon application, la validation côté client est juste une amélioration de l'expérience utilisateur. Et l'async fonctionne. Merci! – Sawyer

Questions connexes