2011-08-24 36 views
6

正如您可能已经知道的那样,Internet Explorer的onchange事件在版本9之前基本上被打破了。当发生更改时,不会触发它,而会在输入字段丢失焦点并发生更改时触发。带文件输入的onchange的解决方法是什么?

这导致了复选框和单选按钮(“使用onclick”)和文本字段(“使用keyup”代替)的各种解决方法。

但是,我遇到了一个文件输入的问题,我不知道我做了什么来通知一个新的文件已被选中,紧随其后,而不是当用户点击其他地方。我无法将自己附加到鼠标事件上,因为它与鼠标无关;而且我无法将自己附加到键盘事件上,因为它与键盘无关。

如果能解决问题,我愿意使用特定于IE的东西。


附加的相关信息:

使用jQuery 1.6和live方法附加事件。

$(".upload").live("change", function() { /* stuff here */ }); 
+0

这里有一些关于这个问题的喋喋不休:http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –

+0

http://jsfiddle.net/c8JuC/1/适用于使用IE7仿真的IE9。 – pimvdb

+0

@pimvdb,我使用'live',因为我在运行中产生了一堆输入,并且事件并没有在正确的时刻被它触发(jquery 1.6)。 – zneak

回答

3

使用onFocus事件,并结合检查以确保存在值。这是因为在用户选择文件并且OS文件选择对话框被移除之后,焦点被返回到输入元素。

+0

有趣。我会尝试的。 – zneak

+1

这当然是仅限IE的异常代码。它在Firefox中完全不起作用。 –

相关问题