2013-02-22 95 views
4

我正在使用bassistance.de/jquery-plugins如何在jQuery验证中验证克隆元素?

这是默认的jQuery表单验证服务。

我知道,有关jQuery验证问题问了太多次,但我的问题是
有点不同。

我有一个形式与一个文件输入和我正在克隆像下面

var picFields = $('#file').clone(true); 

和附加到表格上载多个文件。

而克隆我有“必要”名称类以及将所述规则等

$('.required').each(function() { 
$(this).rules('add', { 
    required: true, 
}); 
}); 

和最初验证等

$('#form').validate(); 

其验证只有第一元件并非所有的动态添加的字段。

+1

您的整个'.rules('add')'方法是多余的。如果这些字段已经有'required'的'class',那么这个字段将自动成为'required'而不需要做任何事情。但是,如果您未在每个字段中包含唯一的'name'属性,那么您将遇到确切的问题。 – Sparky 2014-09-21 02:31:46

+0

js问题的提示:http://jsfiddle.net/nvK7F/。我正在寻找解决方案... – 2015-04-14 16:33:34

回答

2

每个输入都需要一个唯一的名称。插件没有考虑像 name =“location []”这样的东西,你必须添加一个索引(正确的是name =“location [0]”)。 对于克隆的元素,我首先获取html“clone()。html()”,然后用一个计数器号替换[0] 我跟踪例如:.replace(/ [0]/g,“[”+ cont + “]”)

然后我可以安全地将生成的html附加到DOM,并且插件的工作方式与往常一样。

请记住:JQUERY VALIDATE需要输入中的唯一名称!我为此付出了很多时间。

0

解决它!

什么我以前做的:在我克隆对象,我叫创建验证功能:

function add_another_form(){ 
    var new_form = jQuery(".class").clone(true); 
    new_form.appendTo(".parent"); 
    add_validation_for_forms();//attach again the validation ! 
} 

function add_validation_for_forms(){ 
    jQuery(".class").validate({....}) 

但是,这是行不通的,所以我只是在那里使用的。每个功能,它现在可以工作...

function add_validation_for_forms(){ 
    jQuery(".class").each(function(){ 
     jQuery(this).validate({....})