带有实时“点击”的jQuery Validation插件

时间:2011-05-20 10:20:41

标签: jquery-validate jquery

我有一个网站,用户可以使用jquery load更改网页内容。在每个页面内容中,我都有一个表单,我使用jquery validation plugin

进行验证
    $("#form-create").validate({
        submitHandler: function(form) {
            var name = $("#name").val();
            save(name);
            return false;
        }
    });

我注意到所有jquery click函数只有在我更改页面内容之后才能工作,但我用click替换live "click"来解决它。虽然上述验证会出现同样的问题。在我更改页面内容并click解决问题之前,如何使用live "click"有效?或者如何将验证插件与live "click"一起使用,这将解决问题,但不向我解释:)

3 个答案:

答案 0 :(得分:4)

实时点击解决问题的原因是元素最初并不存在于您的DOM上,因此使用“实时”意味着它是一个实时点击,无论是因为新元素到达DOM时它都会刷新。默认事件仅使用已加载的第一个DOM。

如果您想通过实时点击事件检查验证,那么您应该使用以下内容:

$('.submitButton').live("click", function() {

    $("#form-create").validate({
        submitHandler: function(form) {
            var name = $("#name").val();
            save(name);
            return false;
        }
    });

});

希望这会有所帮助,因为你没有指定你正在使用哪个验证插件,这有点困难,但是,无论这个插件应该如何工作,假设您希望调用验证提交按钮点击事件。

答案 1 :(得分:0)

当您将一组元素(例如$("div.clickable"))与事件绑定时,在执行$()函数时使用DOM解析该集合。所有后续元素(在那一刻之后出现)将不受约束,因为它们不属于原始集合

Live就是这样:它会在新元素出现时刷新原始集合,然后新元素在DOM中出现时绑定

答案 2 :(得分:0)

不幸的是,现场没有加载事件,虽然这已经有asked了很长一段时间。

你可以通过在ajax调用中放置一个回调函数来解决这个问题。这可以使用global ajax event handlers全局完成:

$('#contentDiv').ajaxComplete(function() {
    $("#form-create").validate(validateOptions);
});