使用jquery克隆表单时,多文件上载不起作用

使用jquery克隆表单时,多文件上载不起作用,jquery,forms,file,upload,clone,Jquery,Forms,File,Upload,Clone,我必须生成多个动态表单。这些表单包含文件输入元素。我必须上传多个文件。对于动态表单生成,我使用Jquery克隆方法,对于多文件上传,我使用Jquery fyneworks插件(http://www.fyneworks.com/jquery/multiple-file-upload/) 每当我克隆表单时,我都会动态分配ID。克隆表单后,文件插件无法正常工作。它总是添加到第一个表单中,即使我动态地分配ID 我使用以下代码创建了简单的测试场景: <html> <head> &l

我必须生成多个动态表单。这些表单包含文件输入元素。我必须上传多个文件。对于动态表单生成,我使用Jquery克隆方法,对于多文件上传,我使用Jquery fyneworks插件(http://www.fyneworks.com/jquery/multiple-file-upload/)

每当我克隆表单时,我都会动态分配ID。克隆表单后,文件插件无法正常工作。它总是添加到第一个表单中,即使我动态地分配ID

我使用以下代码创建了简单的测试场景:

<html>
<head>
<script src='jquery-1.6.1.js' type="text/javascript"></script>
 <script src='jquery.MultiFile.js' type="text/javascript" language="javascript"></script>
 <script src='jquery.blockUI.js' type="text/javascript" language="javascript"></script>

 <script>
 var i=0;
 $(function(){
    //$("#div0").hide();
 });

       function addMoreForms(){
            i++;
            var x = $("#div0").clone(true);//.insertAfter($("#myForm"));
            $(x).attr("id", "div"+i);
            $(x).find("#myForm0").attr("id","myForm"+i);
            $(x).find("#file0_wrap").attr("id","file"+i+"_wrap");
            $(x).find("#file0_wrap_list").attr("id","file"+i+"_wrap_list");
            $(x).find("#file0").attr("id","file"+i).attr("name","file"+i).attr("class","multi");
           //$("#myForm").append('<input type="file" name="files[]" class="multi"/>')
            $(x).show();
            $(x).insertAfter('#div'+(i-1));
       }

 </script>

</head>
<body>
<div id="div0">
<form id="myForm0" action="your-action">
    <input id="file0" type="file" name="file0" class="multi" maxlength="3"/>
</form>
</div>
<div>
 <a href="#" onclick="addMoreForms()">Add More</a>
 </div>
</body>
</html>

var i=0;
$(函数(){
//$(“#div0”).hide();
});
函数addMoreForms(){
i++;
var x=$(“#div0”).clone(true);/.insertAfter($(“#myForm”);
$(x).attr(“id”,“div”+i);
$(x).find(#myForm0”).attr(“id”,“myForm”+i);
$(x).find(“#file0_wrap”).attr(“id”,“file”+i+“_wrap”);
$(x).find(“#file0_wrap_list”).attr(“id”,“file”+i+“_wrap_list”);
$(x).find(“#file0”).attr(“id”,“file”+i).attr(“name”,“file”+i).attr(“class”,“multi”);
//$(“#myForm”)。追加(“”)
$(x).show();
$(x).insertAfter(“#div”+(i-1));
}

你让事情变得复杂。你想添加更多的文件上传,为什么不使用简单的代码呢?为什么你必须使用插件来做这件事

下面是我添加更多文件以上载的简单代码:

<script>
    var i=0;
    function addMoreForms(){
        i++;
        var $lastDiv = $("#div"+(i-1));
        var $div = $("<div/>").attr("id","div"+i).insertAfter($lastDiv);
        var $input = $lastDiv.find("input").clone();
        $input.appendTo($div);
    }
</script>

<form id="myForm" enctype="multipart/form-data" method="post" action="your-action">
    <div id="div0">
        <input type="file" name="file[]" class="multi" />
    </div>
    <div id="submit">
        <input type="submit" name="submit" value=" Upload " />
    </div>
</form>
<a href="#" onclick="addMoreForms()">Add More</a>

var i=0;
函数addMoreForms(){
i++;
var$lastDiv=$(“#div”+(i-1));
var$div=$(“”).attr(“id”,“div”+i).insertAfter($lastDiv);
var$input=$lastDiv.find(“input”).clone();
$input.appendTo($div);
}

谢谢您的回复。我使用插件是因为我必须限制文件的数量、大小和类型。我必须动态地生成这些表单。每个表单最多可以上传3个文件,大小<10MB,文件类型。有人能帮我解决这个问题吗。