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

3

我需要将jQuery验证插件绑定到我动态生成的表单上。据我所知,.live()是在jQuery中实现这一功能的唯一方法。但是它似乎并不起作用,至少我尝试的方式不行。我认为这是可行的,只是我的问题出在了别处!

以下代码可以正常工作:

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

这会生成语法错误:

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

请不要在 Stack Overflow 上使用 URL 缩短服务。 - Matt Ball
1个回答

14

这段代码无法正常工作,因为你误解了 validate 的工作方式。虽然它看起来像是事件处理函数,比如click,但实际上并不是。

clickbind('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

1
谢谢你。这对我也很有帮助。 - Jay Chandran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接