2

我正在遵循这个建议来清除 IE 中的 FILE 输入(特别是使用克隆方法,也描述了这里,尽管我也尝试过用文字 HTML 替换)。我的目标是在自定义样式的上传控件中有一个“删除文件”按钮,该按钮将清除输入并以准备接收另一个文件的方式“重置”它。

问题是(仅在 IE 中,测试到 IE9),虽然我可以使用这种方法清除 FILE 输入,但我不能在替换的 FILE 输入上使用更改事件。我怀疑这是因为克隆具有与原始 ID 相同的 ID,并且两者都存在于 DOM 中,但这只是一个理论......这可以解决吗?

希望能说明/澄清问题:这个FIDDLE

在所有非 IE 浏览器中,

  1. 单击“添加文件”并选择一个文件
  2. 值被填写到文件字段(通常从视图中隐藏)
  3. “未选择”更改为“已选择文件”
  4. 单击同一行上的“删除文件” - 一切都已重置并准备好再次开始。
  5. 单击“添加文件”,该过程正常重复

在 IE 中,

  1. 1-4 同上
  2. 再次点击“添加文件”,可以选择新文件,但后续动作(3-4)不再出现

是否有适用于“所有”浏览器的解决方案?

4

1 回答 1

0

你现在可以使用它并让它变得更好,这只是一个概念证明

http://jsfiddle.net/9LWPA/4/

我基本上删除了整个部分,然后再次添加它,但是单击处理程序不起作用,因为它是在定义处理程序之后添加的,所以我所做的只是复制整个单击处理程序部分并将其放入干净的文件函数中。我相信你可以做得更好一点。

实际上使用这个http://jsfiddle.net/9LWPA/5/我让它更干净一点。它确实看起来效率不高,但至少它可以工作,在 IE 9 Mac VM 上测试

更新 - 仅将新的点击处理程序移至 IE http://jsfiddle.net/9LWPA/6/

于 2012-07-05T13:29:40.777 回答