jQuery验证中的变量依赖规则

时间:2016-11-13 13:15:51

标签: javascript jquery validation asynchronous

我在使用jQuery Validation Plugin以html格式异步验证登录时遇到问题。我希望它在模糊时发送请求登录有效性的请求,并在收到响应时进行验证。

这是我的代码:

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}

false 用于免费登录, true 用于。

我已经通过在内部放置一些 console.info()行来测试它,看看发生了什么,问题是它永远不会进入 loginAvailable 方法,所以似乎永远不会触发规则。我能做些什么才能做到这一点?

1 个答案:

答案 0 :(得分:0)

我相信找到了答案。它就像更换一样简单:

loginAvailable: gotResponse

loginAvailable: {
                depends: function() {
                    return gotResponse;
                }
            }
相关问题