2012-03-10 3 views
2

は、私はちょうどレコードがデータベースにか存在するかどうかを確認するために検証ルールを作りたかったURLjQuery Validate Pluginを使用してレコードが存在するかどうかを確認するにはどうすればよいですか?私はjQueryの検証プラグインを使用しています

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

の下から見つかりました。私も&のようなajaxスクリプトを$ .validator.addMethodを使って追加しましたが、動作しません。誰かがこれを行う方法をお勧めしますか?

$.validator.addMethod("check_exists", function(value) { 
$.ajax({ 
    type: "POST", 
    url: "xyz.com/check_exists.php", 
    data: $("#frmEdit").serialize(), 
     success: function(result){ 
       if(result=="exists") 
        return false; 
       else 
        return true; 
     }, 
}); 
}, 'This record is already exists'); 

答えて

0

あなたに実行している問題は、(1)AJAXコールがAJAX呼び出しが完了すると、前のようにメソッドが返す非同期であるということである(2)ハンドラからのコールバックハンドラの戻り内のreturn文検証機能ではありません。 これを修正する最も簡単な方法は、remote検証方法を使用することです。自分でやりたい場合は、AJAX呼び出しを同期させ(async: false)、その結果を関数から返された変数に取り込む必要があります。

$.validator.addMethod("check_exists", function(value) { 
    var status; 
    $.ajax({ 
     type: "POST", 
     async: false, 
     url: "xyz.com/check_exists.php", 
     data: $("#frmEdit").serialize(), 
     success: function(result){ 
      status = result=="exists"; 
     }, 
    }); 
    return status; 
}, 'This record is already exists'); 
+0

nopesを、クリートする必要はありません。私はすでにajax async falseを設定していましたが、まだ動作していません。それは何のエラーも与えないが、それを検証していない。 – aslamdoctor

+0

@aslamdoctorあなたは私が同様に作った他の変更に注意しましたか?結果をキャプチャする必要があるだけでは、 'async:false'にするだけでは不十分です。しかし、実際には 'remote'検証オプションを試してみるべきです。あなたは私の答えを読む前にリンクを追加しているかもしれません。 – tvanfosson

関連する問題