jQuery验证器附加方法无法按预期工作

时间:2016-03-18 05:25:22

标签: javascript jquery ajax validation

我正在使用这个jQuery验证插件,http://jqueryvalidation.org/我正在创建一个加法方法,如下所示。

jQuery.validator.addMethod('exists', function(value, element) {
    $.ajax({
        data: {username: value},
        type: 'POST',
        url: 'action/check/',
        dataType: 'json',
        success: function(data) {
            if (data==true) {
                console.log(data);
                return true;
            }
            if (data==false) {
                console.log(data);
                return false;
            }
        }
    })
}, 'This username is already in use');

我的控制台从检查脚本中获取正确的数据,在我的控制台中我可以看到true和false等。但我不明白的是验证标志似乎标记输入而不管输入是什么。< / p>

rules: {
        password_confirm: {
            equalTo: 'input[name=password]'
        },
        username: {
            exists: true
        }
    }

我的数据库中已经有了chris用户名,所以当我在用户名输入中键入chris时,我应该得到一个重复用户的标志,但无论我得到什么类型的验证标志

我缺少什么

2 个答案:

答案 0 :(得分:2)

您的验证不会起作用,因为它是异步的(ajax请求)。

您可以使用现有的remote rule来执行此操作,确保您的请求返回true / false作为结果

ca-certificates

答案 1 :(得分:0)

    jQuery.validator.addMethod('exists', function(value, element) {

         var result = false;

         $.ajax({
            data: {username: value},
            type: 'POST',
            url: 'action/check/',
            dataType: 'json',
            success: function(data) {
                result = data; // make sure data returns bool value
            }
        });

        return result;
    }, 'This username is already in use');