我使用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:" "});
}
我不会发布所有代码,因为它非常复杂。如果你不知道,最重要的是,可能会导致问题,我会这样做。
答案 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 () {
//...
});