清除IE中的FILE输入可防止后续更改事件

时间:2012-07-05 12:59:15

标签: jquery internet-explorer

我正在关注this advice以清除IE中的FILE输入(特别是使用克隆方法,也称为here,尽管我也尝试用文字HTML替换)。我的目标是在自定义样式的上传控件中有一个“删除文件”按钮,该按钮将清除输入并“重置”它以便它可以接收另一个文件。

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

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

在所有非IE浏览器中,

  1. 点击“添加文件”并选择一个文件
  2. 值填入文件字段(通常从视图中隐藏)
  3. “未选择”更改为“文件已选”
  4. 点击同一行中的“删除文件” - 所有内容都会重置并准备好再次运行。
  5. 点击“添加文件”,正常重复该过程
  6. 在IE中,

    1. 1-4以上
    2. 再次单击“添加文件”,可以选择新文件,但后续操作(3-4)不会再次出现
    3. 是否有适用于“所有”浏览器的解决方案?

1 个答案:

答案 0 :(得分:0)

您现在可以使用它并使其更好,它只是一个概念证明

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

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

实际上使用这个http://jsfiddle.net/9LWPA/5/我让它变得更清洁了。它确实看起来效率不高,但至少它可行,在IE 9 Mac VM上测试

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