JQuery:将.validate插件绑定到.live

cst*_*elc 3 javascript jquery

我需要将jQuery validate插件绑定到我动态生成的表单.据我所知.live(),这是在jQuery中执行此操作的唯一方法.它似乎不起作用,至少我正在尝试的方式.我认为这是可行的,它只是eebkac!

这很好用:

$("form#form_CreateUser").validate({  
   submitHandler: function(form) {  
    // do other stuff for a valid form  
    UserSubmit();  
   }  
});  
Run Code Online (Sandbox Code Playgroud)

这会生成语法错误:

$("form#form_CreateUser").live('validate', function() {  
   submitHandler: function(form) {  
    // do other stuff for a valid form  
    UserSubmit(); 
   }  
});  
Run Code Online (Sandbox Code Playgroud)

lon*_*day 14

这不起作用,因为你误解了它是如何validate工作的.它看起来像事件处理函数click,但实际上并非如此.

click是一个快捷方式bind('click', fn). validate无法使用bind.因为live实际上是一种使bind调用工作在尚不存在的元素上的方法,所以它不起作用validate.

最简单的方法是创建一个函数,validate在每次插入新内容时调用并调用该函数.例如,如果您使用AJAX插入表单,则可以使用以下ajaxComplete函数:

function setupValidate() {
    $("form#form_CreateUser").validate({
        submitHandler: function(form) {
            // do other stuff for a valid form
            UserSubmit();
        }
    });
}

$(document).ajaxComplete(setupValidate); // after every AJAX request
setupValidate(); // right now
Run Code Online (Sandbox Code Playgroud)