如何解决IE 7和8中关于创建动态文件输入字段的错误



当我尝试通过动态输入字段上传多个文件时,Internet Explorer 7和8出现问题。对于dynamic,我的意思是用户可以点击"添加"按钮,该按钮运行一些JavaScript来创建一个新的文件输入字段。因此,它们最终如下所示:

<input type="file" name="uploads[0]"/>
<input type="file" name="uploads[1]"/>
<input type="file" name="uploads[2]"/>

它可以与Firefox、Chrome和Internet Explorer 9配合使用,但在Internet Explorer 7和8中,我在服务器端的Struts2中遇到了转换错误。我的方法需要一个文件列表,但我收到一个带有文件路径的字符串。

这是怎么造成的,我该如何解决?

鉴于创建表单元素的JavaScript代码在IE6/7/8中中断,这只能意味着您(间接)使用document.cloneNode()来创建新的输入元素。你不应该那样做。由于一个错误,IE6/7/8不允许您更改name属性,它将保持与原始源元素相同。

您应该使用document.createElement()来创建全新的元素。这反过来也有一个IE6/7(而不是8!)特定的错误。您不能通过setAttribute()设置name属性,而是需要像这样在createElement()函数中直接指定它

document.createElement('<input name="uploads[' + index + ']">');

另请参阅:

  • 无法使用.cloneNode克隆IE中的表单元素
  • createElement在IE中损坏

最新更新