jQuery验证不在Ajax加载的表单上工作

时间:2015-03-09 18:12:00

标签: jquery jquery-validate smoothstate.js

我有一个用Ajax添加的表单并使用jQuery Validate。我将同事委托给.on(),但这并没有附在表格上。

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

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

1 个答案:

答案 0 :(得分:1)

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

$("body").on("validate", ...
您可以使用.on()进行委派的

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

您只能将.validate()附加/调用到DOM中已存在的表单上。换句话说,它不能被委派。


Referring to the documentation for the smoothState plugin,在将新内容注入页面后,有一个名为callback的选项

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

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