1
<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 请求。虽然返回真/假都评估为验证错误。

但是,删除 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>
4

1 回答 1

2

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

submitHandler仅当表单有效并且您可以在其中放置任何ajax表单提交时才会触发内置函数。

ajax在两个地方做......使用remote规则和你的submit处理程序。

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

根据文档,这仅使用规则remote

$(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 进行表单提交,以下只是我的建议。否则忽略它。

根据文档,submitHandler是使用回调:

$(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
        }
    });

});
于 2013-02-27T16:20:32.740 回答