闲话少说,直接上代码静态的input file
<form id="f1" action="#">
    <div>
         <input type="file" name="aaa" />
         <input type="file" name="aaa" />
         <input type="file" name="aaa" />
    </div>
    <input type="submit" />
</form>动态生成时
<form id="f2" action="#">
     <div id="ddd">     </div>
     <input type="button" onclick="createNewInputFile()" value="addMore" />
     <input type="submit" />
</form>
<script>
     function createNewInputFile(){
        var inputfile = "<input type='file' name='bbb' />"; 
        document.getElementById("ddd").innerHTML +=inputfile ;
     }
</script>以上的代码,手打出来的 累啊。。
就是新建3个动态的 选择了文件,但是无法上传,点一下submit就把一个input file里面的内容消失了。。崩溃,,,求高手。

解决方案 »

  1.   

    <form id="f2" action="#">你的action问题,估计是
    把#号去掉
      

  2.   

    。你提交本页
    就相当于 重新加载页面
    重新加载的页面 本来就没有 你动态添加的 input.file
    所以是合理的
      

  3.   

    var inputfile = "<input type='file' name='bbb' />"; 
    document.getElementById("ddd").innerHTML +=inputfile ;我觉得还是动态生成的方法这里有问题。innerHTML+= 的操作,相当于把innerHTML的内容完全重新的设置了一下,所以当每新增一次,都会把之前的内容全部清空,再重新添加。
    效果看起来是 2+1=3,但3里已经完全不包含原来的2了,而是全新的3
    所以还是那句话:innerHTML不是万能的,特别是在动态创建Dom时,最好不要用innerHTML
    还是document.createElement最保险
      

  4.   


    var inputfile = document.createElement("input");
    inputfile.setAttribute("type","file");
    inputfile.setAttribute("name","bbb");
    document.getElementById("ddd").appendChild(inputfile) ;
      

  5.   

    采用这里的方法
    http://dotnet.aspx.cc/article/58ea3515-36f2-4fd9-ac89-eaf49f59816c/read.aspx
      

  6.   

     action="#"  没必要吧