2016-11-13 2 views
0

jQuery Validation Pluginを使用して自分のhtmlフォームで非同期でログインを検証する際に問題があります。私はそれがぼかしのログインの有効性を要求する要求を送信し、応答を受信するときに検証します。jQueryのバリデーションで変数に依存するルール

var loginAvailability = false; 

$().ready(function() { 

    var gotResponse = false; 

    $("#form").validate({ 

     onkeyup:false, 

     rules: { 
      login: { 
       required: true, 
       loginAvailable: gotResponse 
      } 
     }, 

     messages: { 
      login: { 
       required: "Please enter your login.", 
       loginAvailable: "This login is already in use." 
      } 
     } 
    }); 

    $("#login").blur(function() { 
     if($('#login').val()) { 
      var value = $('#login').val(); 
      $.ajax({ 
       type: "GET", 
       url: "my server adress"+value, 
       data: "", 
       success:function(data){ 
        gotResponse = true; 
        loginAvailability = data[value] === false; 
        $("#form").validate().element("#login"); 
       } 
      }); 
     } 
    }); 
}); 

$.validator.addMethod("loginAvailable", function(value, element) { 
    return loginAvailability; 
}); 

サーバーからの応答がJSON形式であるが、このように見える:

{"chosenLogin": false} 
は無料のログイン用で

、そして

この

は私のコードです撮影のためです。

私は何が起こっているかを確認するために、いくつかのconsole.info()内のラインを置くことによって、それをテストしてみた問題は、それがloginAvailable方法に行くことはないということですので、ルールがトリガされることはありませんようにそれはそう。この仕事をするために私は何ができますか?

答えて

0

私は答えを見つけたと信じています。

loginAvailable: gotResponse 

loginAvailable: { 
       depends: function() { 
        return gotResponse; 
       } 
      } 
と:それは交換するほど簡単でした
関連する問題