2009-10-14 17 views
15

私はjqueryバリデーションを使用しています。私は電子メールを検証する必要があります。jquery validation with ajax call

私はSO FARとても良い

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

を使用

。問題は、指定された電子メールがすでに存在するかどうかを確認するためにajax呼び出しを行う必要があるということです。表示メッセージが「この電子メールは既に終了しています。

誰でも私がこれを実装するのを助けることができます。

答えて

16
remote: "/some/remote/path" 

このパスには、$ _GETのフィールドの値が渡されます。 ..だから何を実際にあなたのケースで呼び出されることは次のようになります。

/some/remote/path?email=someemailuriencoded 

は単なるテキストは、真または偽のサーバー側のコードのリターンを持っています。

次に、対応するメッセージもremoteという名前です。

remote: "The corresponding email already exists" 

似たようなのための私のコード:

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

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; 

私のデータベース抽象化のものを使用して、しかし、あなたはそれを得るです。

+0

はダレンありがとうございました。私はそれを試してみる、私はthatsだと思うそれは –

+0

どのように私はリモートのためだけにメッセージを追加することができます...またはどのように私は何かを行うことができますonsuccess – jack

+0

あなたは時間の時間を保存した。ありがとう – Sino

0

あなたのサーバー言語は? PHPまたはASP?

これは、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

彼はajaxが組み込まれているvalidateを使用しています。 –

+0

著者はjQuery検証プラグインの使用を意味すると考えています:http://docs.jquery.com/Plugins/Validation ajax呼び出しだけではありません。 – Kamarey

+0

ああ、それは分かっていない – k0ni

7

私はidの入力を持っているまあ、これは私の作品...

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

ノート 'txtMail'