jQuery - 远程验证规则

时间:2013-02-27 15:59:31

标签: php jquery jquery-validate

<script type="text/javascript">
$(document).ready(function() {
    jQuery(function($){
        $("#form").submit(function(e){
           if ($(this).valid()){
                $.ajax( {
                    type: "POST",
                    url: "http://localhost/My/modules/validate.php",
                });
           }
           return false;
     })});
        $("#form").validate({
            rules: {
                user: {
                    remote: {
                        url: "http://localhost/My/modules/validate.php",
                        async: false,
                    }
                }
            }
        });
});
$.validator.setDefaults({
    debug:      true,
    success:    "valid",
});
</script>

我想创建远程验证规则。此示例正确读取ajax请求。虽然返回true / false都会评估验证错误。

但是,删除ajax部分(jQuery())会导致缺少ajax初始化,甚至不会处理请求。

async:false似乎是被动的,删除它会产生同样的结果。

任何人都可以有任何想法在这里出现什么问题?

编辑:

$(document).ready(function() {
        $("#form").validate({
            rules: {
                user: {
                    remote: "http://localhost/My/modules/validate.php",
                }
            },
            submitHandler: function (form) {
                // do your ajax form submission here
                return false; // prevent redirect since you did ajax
            }
        });
});
</script>

1 个答案:

答案 0 :(得分:2)

使用Validate插件时,您不需要外部submit处理程序,因为它已经内置了所有事件处理程序。

只有在表单有效时才会触发内置submitHandler,并且您可以在表单提交时放置任何ajax

您正在两个地方ajax使用remote规则和submit处理程序。

  • 如果您的ajax用于验证字段,请使用remote规则。
  • 如果您的ajax用于表单提交,请使用submitHandler

这仅使用the remote rule, as per documentation

$(document).ready(function () {

    $("#form").validate({
        rules: {
            user: {
                // ajax in remote rule to check this field
                remote:  "http://localhost/My/modules/validate.php"
                }
            }
        }
    });

});

// get rid of all this
//$.validator.setDefaults({
    //debug: true,  // not needed in production
    //success: "valid", // this is already the default.
//});

以下只是我的建议如果您正在使用ajax进行表单提交。否则请忽略它。

这是使用the submitHandler callback, as per documentation

$(document).ready(function () {

    $("#form").validate({
        // your rules & options,
        submitHandler: function (form) {
            // do your ajax form submission here
            return false; // prevent redirect since you did ajax
        }
    });

});