4

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

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

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

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

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

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

在克隆时,我有一个带有“必需”名称的类并添加了类似的规则

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

并最初验证喜欢

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

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

4

2 回答 2

5

每个输入都需要一个唯一的名称。插件无法考虑诸如 name="location[]" 之类的事情,您必须添加一个索引(正确的应该是 name="location[0]")。对于克隆的元素,我首先得到 html "clone().html()" 然后我用我跟踪的计数器编号替换 [0] 例如:.replace(/[0]/g, "["+cont+"] ")

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

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

于 2016-11-20T17:09:56.753 回答
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({....})
于 2015-04-14T16:53:03.113 回答