如何在jQuery验证中验证克隆元素?

时间:2013-02-22 13:16:03

标签: jquery jquery-validate

我正在使用bassistance.de/jquery-plugins

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

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

我有一个带有一个文件输入的表单,我正在克隆如下

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

并附加到表单中以上传多个文件。

在克隆时,我有一个带有'required'名称的类,并添加了像

这样的规则
$('.required').each(function() {
 $(this).rules('add', {
    required: true,
 });
});

并且最初验证如

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

仅验证第一个元素而不是所有动态添加的字段。

2 个答案:

答案 0 :(得分:4)

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

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

记住:JQUERY VALIDATE需要在输入中有一个独特的名字!为此,我为自己付出了很多时间。

答案 1 :(得分: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({....})

但那不起作用,所以我只是在那里使用了 .each 函数,它现在可以正常工作......

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