使用文件输入进行onchange的解决方法是什么?

zne*_*eak 6 javascript onchange internet-explorer-8

正如你们中的一些人可能已经知道的那样,Internet Explorer的onchange事件在版本9之前基本上被破坏了.而不是在发生更改时触发,它会在输入字段失去焦点并发生更改时触发.

这导致复选框和单选按钮("使用" onclick代替")和文本字段(" keyup替代使用")的各种变通方法.

但是,对于文件输入我遇到了这个问题,我无法弄清楚我做了什么来通知已经选择了一个新文件,而不是当用户点击其他地方时.我无法将自己附加到鼠标事件中,因为它与鼠标无关; 我无法将自己附加到键盘事件上,因为它与键盘无关.

如果可以解决问题,我愿意使用特定于IE的东西.


其他信息:

我使用jQuery 1.6和live附加事件的方法.

$(".upload").live("change", function() { /* stuff here */ });
Run Code Online (Sandbox Code Playgroud)

Chr*_*ker 3

使用onFocus事件并结合检查来确保存在值。这是有效的,因为在用户选择文件并且操作系统文件选择对话框被删除后,焦点将返回到输入元素。