2009-10-14 7 views
15

Ich benutze die Jquery-Validierung und ich muss eine E-Mail validieren.jquery Validierung mit Ajax Anruf

Ich benutze

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

so weit so gut. Das Problem ist, dass ich einen Ajaxanruf machen muss, um zu überprüfen, ob gegebene E-Mail bereits existiert. Wenn vorhanden, Anzeige Nachricht "Diese E-Mail bereits beendet. Bitte wählen Sie andere".

Kann mir jemand helfen, dies zu implementieren.

Antwort

16
remote: "/some/remote/path" 

Dieser Pfad wird den Wert des Feldes in einem $ _GET übergeben. so .. was eigentlich in Ihrem Fall aufgerufen wird, wäre:

/some/remote/path?email=someemailuriencoded 

Haben Sie den Server-seitigen Code Rückkehr nur der Text wahr oder falsch.

Dann wird die entsprechende Nachricht auch als remote bezeichnet.

remote: "The corresponding email already exists" 

Mein Code für etwas ähnliches:

$("#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 
}); 

Der entsprechende Server-seitigen Code in 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; 

Natürlich, dass meine Datenbank-Abstraktions Zeug ist, aber Sie es.

+0

Daren danken . Ich werde es fahren testen, ich denke, das ist es –

+0

Wie kann ich Nachricht nur für Remote hinzufügen ... oder wie kann ich 'etwas tun' Onsuccess – jack

+0

Sie haben gerade mir Stunden der Zeit gespeichert. Danke – Sino

0

Was ist Ihre Serversprache? PHP oder ASP?

Dies ist das jQuery Teil:

$.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

Er verwendet Validate, das die Ajax eingebaut hat. –

+0

Denken Sie, der Autor meinte eine Verwendung des jQuery-Validierungs-Plugins: http://docs.jquery.com/Plugins/Validation. Nicht nur ein Ajax-Anruf. – Kamarey

+0

Ah ok, wusste das nicht – k0ni

7

Nun, das funktioniert für mich ...

$('[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; 
     } 
    }); 

beachten Sie, dass ich eine Eingabe mit der id 'txtMail' haben