jQuery验证动态添加的输入

时间:2011-05-05 15:04:56

标签: jquery jquery-plugins jquery-validate

我使用jQuery validate来验证我正在处理的网站上的一堆表单。

在此网站上,我根据select选项选择克隆一些输入。我想验证这些输入,但是当我这样做时,只有第一个输入得到验证。

我试图将$('form').validate();放在克隆脚本中,其中放置了许多其他脚本(并且可以正常工作),但它仍然只验证第一个脚本。

我该怎么办?

下面是我的克隆脚本,我相信应该放置一个新的validate()。或者是什么?

// Clone per number chosen
for (var i = 0; i < childrenCount; i++) {
    birthday
        .clone()
        .attr('name', birthday.attr('name') + count++ - 9)
        .appendTo('.childInputs')
        .children("input.childDD").attr('id', 'child' + count + 'DD')
        .next("input.childMM").attr('id', 'child' + count + 'MM')
        .next("input.childYYYY").attr('id', 'child' + count + 'YYYY')
        .parent().children('.noChild').html(count);

    $(this).parent().next(".linkedToPrev").slideDown('slow');
    $("input.yyyy").mask("9999",{placeholder:" "});
}

我不会发布所有代码,因为它非常复杂。如果你不知道,最重要的是,可能会导致问题,我会这样做。

1 个答案:

答案 0 :(得分:1)

如果您正在动态添加元素,并且正在使用jQuery的常规事件绑定方法,除非您使用$.live()处理程序,否则新元素不会自动绑定:

$('form').live('submit', function() {
   var $inputs = $('input', this); //this selects all inputs within the form
   //do validation
});

我确信你现在正在做类似的事情,但是这将绑定所有现有的表单元素和所有未来的表单元素。当一个提交事件触发时,脚本将获取触发事件的表单中的所有现有输入元素,然后您可以迭代并验证。

希望这就是你要找的东西。

编辑:由于某人已经恢复了这篇4年前的帖子,因此在这里提及.live()已经弃用,这是现代jQuery方式,甚至可以委托代表文档:

$(document).on('submit', 'form', function () {
    //...
});