jQuery 验证不处理由 Ajax 加载的表单

jQuery Validate not working on form loaded by Ajax

我有一个用 Ajax 添加并使用 jQuery 验证的表单。我委托 associate 与 .on() 但这并没有附加到表单。

不确定我可能错过了什么,关于使用动态表单Validate.js的细节很少

$(document).ready(function(){
    $("body").on("validate", "#contactForm", function() {
        $('#contactForm').validate({
          ....
        });                    // <- end '.validate()'
    });
});

问题的基本前提是有缺陷的...

$("body").on("validate", ...

There is no such "validate" event as part of jQuery 你可以用 .on() 委托。您只能在加载表单的 HTML 后立即调用 .validate() 方法,这会初始化插件。

您只能 attach/call .validate() 添加到 DOM 中已存在的表单上。也就是说不能委托。


Referring to the documentation for the smoothState plugin,有个叫callback的选项就是运行"after the new content has been injected into the page".

这是您必须调用 .validate() 方法的地方。

callback : function(url, $container, $content) { // <- fires AFTER page (form) is loaded
    $('#contactForm').validate({ // <- initializes the plugin on your form
        ....
    }); 
}