jQuery:如果文件选择由文件输入以外的元素触发,则不会触发文件输入元素上的“更改”事件

时间:2010-11-10 23:56:21

标签: jquery internet-explorer events file-io

RE


以上问题涉及在完成文件选择后,在浏览器中始终触发“更改”事件。这已得到解决,正如http://jsfiddle.net/7wR2L/

中的示例所证明的那样

我的情况有点不同。看来这个问题在另一个背景下变得丑陋。

根据设计约束,我必须使用非文件输入元素('a'标签)来触发文件输入元素上的“click”事件。到目前为止,我的测试看起来,当以这种方式选择文件时,文件输入无法触发“更改”通知。

请查看http://jsfiddle.net/rudylattae/7wR2L/8/

上的示例

测试环境:

Windows Server 2008 R2

  • Chrome 7.0.517.44 - PASS
  • Firefox 3.6.9 - FAIL
  • IE 8.0.7600.16385 64bit - FAIL

Windows XP专业版(2002 - SP3)

  • Chrome 8.0.552.28 beta - PASS
  • Firefox 3.5.14 - 失败(甚至不会触发文件选择器)
  • IE 8.0.6001.18702 - FAIL

2 个答案:

答案 0 :(得分:7)

使用MSIE使用onpropertychange - 事件,例如:http://jsfiddle.net/7wR2L/14/

由于jQuery不支持此事件,您必须在没有jquery的情况下分配它(内联或使用attachEvent)

在其他浏览器中尝试使用变异事件,也许他们会在那里工作。请参阅昨天有关变异事件的相关主题,并举例说明它们的工作原理:How to capture change on page title from a firefox extension

答案 1 :(得分:0)

尝试使用现代版的 jQuery

Internet Explorer中更改事件的已解决问题已在 jQuery> = 1.6.4 中修复。