2009-10-14 4 views
15

J'utilise la validation jquery et j'ai besoin de valider un e-mail.jquery validation avec appel ajax

J'utilise

$("#myForm").validate({ 
     rules: 
      email: { 
       required: true, 
       email: true 
      } 
}) 

so far so good. Le problème est que j'ai besoin de faire un appel ajax pour vérifier si un email est déjà disponible.Si existe un message d'affichage "Cet e-mail existe déjà.Veuillez sélectionner autre".

Quelqu'un peut-il m'aider à l'implémenter?

Répondre

16
remote: "/some/remote/path" 

Ce chemin sera passé la valeur du champ dans un $ _GET. donc .. ce qui sera effectivement appelé dans votre cas serait:

/some/remote/path?email=someemailuriencoded 

ont le code côté serveur retour juste le texte vrai ou faux.

Puis le message correspondant également appelé distant.

remote: "The corresponding email already exists" 

Mon code pour quelque chose de similaire:

$("#password_reset").validate({ 
    rules: { 
    email: { required: true, email: true, minlength: 6, remote: "/ajax/password/check_email" } 
    }, 
    messages: { 
    email: { required: "Please enter a valid email address", minlength: "Please enter a valid email address", email: "Please enter a valid email address", remote: "This email is not registered" } 
    }, 
    onkeyup: false, 
    onblur: true 
}); 

Le code côté serveur correspondant en php:

$email_exists = $db->prows('SELECT user_id FROM users WHERE email = ? LIMIT 1', 's' , $_GET['email']); 
if ($email_exists) { echo 'true'; } else { echo 'false'; } 
exit; 

Bien sûr, qui est en utilisant mon truc d'abstraction de base de données, mais vous l'obtenez.

+0

Merci Daren . Je vais tester le conduire, je pense que c'est –

+0

comment puis-je ajouter un message seulement pour la télécommande ... ou comment puis-je «faire-quelque chose» des succès – jack

+0

Vous venez de me sauver des heures de temps. Merci – Sino

0

Quel est votre langage de serveur? PHP ou ASP?

Ceci est la partie jQuery:

$.ajax({ 
    type: "POST", 
    url: "YourWebserviceOrWhatEver", 
    data: "{'Email':'[email protected]'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     if(msg.EmailExists){ 
     //Email exists 
     alert("This email already exists. Please select other"); 
     } 
     else { 
     //Email doesn't exist yet 
     doSomething(); 
     } 
    } 
}); 
+0

il utilise validation, qui a l'ajax intégré. –

+0

Pensez que l'auteur signifiait une utilisation du plugin de validation jQuery: http://docs.jquery.com/Plugins/Validation. Pas seulement un appel ajax. – Kamarey

+0

Ah ok, je ne savais pas que – k0ni

7

Eh bien, cela fonctionne pour moi ...

$('[id$=txtEmail]').rules("add", { required: true, email: true, 
     remote:function(){ 
       var checkit={ 
        type: "POST", 
        url: WebServicePathComplete+"VerifyEmail", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        data: "{'email':'" +$('[id$=txtEmail]').val() + "'}" 
       }; 
       return checkit; 
     } 
    }); 

Notez que j'ai une entrée avec l'id 'txtMail'