Многофайловая загрузка не работает при клонировании формы с помощью jquery - PullRequest
0 голосов
/ 28 ноября 2011

Мне нужно создать несколько динамических форм.Эти формы содержат элемент ввода файла.Я должен загрузить несколько файлов.Для динамической генерации форм я использовал метод клонирования Jquery, для многократной загрузки файлов я использовал плагин jquery fyneworks (http://www.fyneworks.com/jquery/multiple-file-upload/).

При каждом клонировании формы я буду назначать идентификаторы динамически. После клонирования формы плагин файла не работает должным образом.Он всегда добавляется к первой форме, даже если я назначаю идентификаторы динамически.

Я создал простой тестовый сценарий со следующим кодом:

<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>

1 Ответ

0 голосов
/ 28 ноября 2011

Вы усложняете вещи. Вы хотите добавить больше файлов для загрузки, почему бы вам не использовать простой код? почему вы должны использовать плагин, чтобы сделать это?

Вот мой простой код для добавления файлов для загрузки:

<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>
...