Heim > Artikel > Web-Frontend > So fügen Sie mit AjaxFileUpload dynamisch eine Datei-Upload-Box hinzu
Dieses Mal zeige ich Ihnen, wie Sie mit AjaxFileUpload dynamisch eine Datei-Upload-Box hinzufügen Fall. Schauen wir uns das einmal an. Aber es gibt nur eine feste Anzahl von Dateien. Wenn die Nachfrage nicht sicher ist, wie viele Dateien vorhanden sind, müssen wir dynamisch eine Datei-Upload-Box hinzufügen, um Flexibilität zu erreichen.
Basierend auf dem Grundgerüst des vorherigen Artikels bleibt das Grundgerüst unverändert. Die folgenden Aspekte werden hauptsächlich geändert:1 Datei-Upload-Boxen
2. Holen Sie sich die ID der Datei-Upload-Box
3. Konvertieren Sie das ID-Array in das erforderliche Objekt-Array in ajaxfileupload.js
Lösen Sie die oben genannten Probleme nacheinander
1. Dynamisches Hinzufügen und Löschen von Datei-Upload-Boxen implementieren
<body> <form action="" enctype="multipart/form-data"> <h2> 多文件上传 </h2> <input type="file" id="file1" name="file" /><a id="add" href="javascript:void();" rel="external nofollow" onclick="addFile();">添加</a> <span> <table id="down"> </table> </span> </br> <input type="button" onclick="fileUpload();" value="上传"> </form> </body>
<script type="text/javascript"> //添加附件 function addFile(){ var fileLength = $("input[name=file]").length+1; var inputFile = "<p id='addFile"+fileLength+"'><input type='file' id='file"+fileLength+"' name='file' />" +"<a href='javascript:void();' onclick='delFile("+fileLength+");'>删除</a></p>"; $("#add").after(inputFile); } //删除附件 function delFile(id){ $("#addFile"+id).remove(); } </script>
2 . Holen Sie sich die ID der Datei-Upload-BoxDa wir nicht wissen, wie viele Upload-Boxen es gibt, wird das ID-Attribut jedes Mal erhöht, wenn wir eine Upload-Box hinzufügen Form von Datei1 und Datei2
Sie können jede Schleife verwenden, um Zeichen zu verbinden
Dann erhalten wir den Dateiwert wie:var files = ""; //获取所有 <input type="file" id="file1" name="file" /> 的ID属性值 $("input[name=file]").each(function(){ files = files + $(this).attr("id")+","; }) //将字符最后一逗号(,)截取掉 files = files.substring(0,files.length-1);
var files = "file1,file2,file3";
Sie können um die Dateien als String-Typ anzuzeigen
console.info(typeof(files));
weil Wir brauchen so etwas wie
anstelle von var files = ['file1','file2','file3'];
, also müssen wir es konvertieren. Tatsächlich ist es nicht notwendig, den Vorgang in ajaxfileupload.js var files = "file1,file2,file3";
Sie können es beim Abrufen der ID konvertieren und dann den Wert übergeben. Es spielt keine Rolle, wo es ist, die Methode ist die gleiche.
Finden Sie immer noch den folgenden Code:
Fügen Sie Folgendes zu diesem Code hinzu:var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form);Der Effekt ist wie gezeigt:
var t = ''; if(typeof(fileElementId) == 'string'){ /* * 将传过来的值 如:"file1,file2,file3" 转换为:['file1','file2','file3'] */ var s = fileElementId.split(","); for(var i in s){ t = t + "'"+s[i]+"'"+","; } t = "["+t+"]"; t = t.replace(",]", "]") } fileElementId= eval('('+ t +')'); //将string类型转换为Object类型Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Eine praktische Zusammenfassung von Ajax und JSONP im ProjektSo verwenden Sie AjaxFileUpload, um mehrere zu implementieren Datei-Uploads
Das obige ist der detaillierte Inhalt vonSo fügen Sie mit AjaxFileUpload dynamisch eine Datei-Upload-Box hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!