Firefox没有从javascript函数创建的输入传递值; IE工作

时间:2013-03-20 07:48:48

标签: php javascript firefox dom input

php代码, 这是一个使用javascript创建输入的小函数,然后将这些上传的文件发布到下一页。 它在IE上运行良好,但在FF上失败。它将只传递第一个也是唯一一个不是由js addMore()创建的文件。 IE: 数组([name] =>数组([0] => j1.jpg))

FIREFOX 数组([name] =>数组([0] => j1.jpg 1 => j2.jpg 2 => j3.jpg)

一位朋友告诉我,js DOM创建的新节点不适合旧帖子...... DOM协议......所以FF无法识别它......是吗?如何纠正,谢谢

//   html content


<td id="div1">
<input name="upload[]" id="upload" type="file" style="width:250px;" />                  
<input name="button" type="button" onClick="addMore()" value="+">
<br /> to add more files, please click the "+" button
</td>


//   js content
<script language="javascript">
    var addMore = function()  
 {  

     var div = document.getElementById("div1");  
     var br = document.createElement("br");  
     //var input = document.createElement("input");
     var input = navigator.userAgent.indexOf("MSIE")>0 ? document.createElement("<input name=\"upload[]\">") : document.createElement("input");
     var button = document.createElement("input");  

     input.setAttribute("type", "file");  
     input.setAttribute("name", "upload[]");
     input.setAttribute("id", "upload");
     button.setAttribute("type", "button");  
     button.setAttribute("value", "-");  
     button.onclick = function()  
     {  
         div.removeChild(br);  
         div.removeChild(input);  
         div.removeChild(button);  
     }  
     div.appendChild(br);  
     div.appendChild(input);  
     div.appendChild(button);  

}  
</script>

1 个答案:

答案 0 :(得分:0)

尝试使用jQuery来执行此操作。你不需要写所有这些代码。 jQuery.clone()会做的工作。如果您需要更加花哨的东西,那么您可以使用this plugin来简单地通过跨浏览器支持获得所需的结果。这是demo of the plugin