jQuery,自定义验证和AJAX

时间:2011-09-14 21:00:27

标签: jquery jquery-validate

我的问题是基于代码的流程更基于流程,但是我正在使用分享(并且可能偶然发现一些不一致):

  • jQuery 1.6.2
  • jQuery Validations 1.8.1

所以这里......

添加需要调用服务器的自定义验证(使用addMethod)(而不是内置的远程调用)时,必须设置为响应同步,因为该方法将完成在结果从服务器返回之前。这是对的吗?

我还假设这两种主要方法是通过使用async false或deferred.promise()调用$ .ajax请求。这是对的吗?

我一直在寻找许多帖子,这些帖子使用getJSON提出与自定义验证相关的问题,并且响应通常是“你没有返回任何东西”但是这不会错过这一点 - 不是响应太迟了还有吗?

感谢您的回复!

1 个答案:

答案 0 :(得分:2)

您的假设是正确的。您不能将异步请求与自定义方法一起使用,因为jQuery validate需要知道这是异步请求。这就是为什么你应该在这种情况下使用remote规则而不是自定义方法:

$("#myform").validate({
    rules: {
        email: {
            required: true,
            email: true,
            remote: {
                url: "check-email.php",
                type: "post",
                data: {
                    username: function() {
                        return $("#username").val();
                    }
                }
            }
        }
    }
});

同步AJAX请求(或SJAX)不是我建议你做的事情。