在IE8中,有没有替代jQuery change()方法来检测用户通过对话框选择新文件的方法?

4

当用户选择文件并关闭对话框后,我无法检测到 input type="file" 改变其值的情况。

$('.myInput').change(function(){
    alert($(this).val());
})

除了IE之外,上述jQuery代码在所有浏览器中都能完美运行。由于某种原因,在输入字段失去焦点之后,IE才会检测到更改。

是否有一种方法可以在对话框关闭后立即检测更改?或者强制使输入字段在对话框关闭后失去焦点,以便IE可以检测到它?

我很困惑。谢谢任何帮助。


我现在使用的是1.4版本。我会尝试升级到1.4.2,看看是否有任何变化。感谢你的提示。 - ababa
1
这是一个已知的IE(也称为特殊孩子)/jQuery bug,有一个临时修复方法可在错误票上获得,但它尚未被纳入核心。1.4.2几乎进行了整个事件重写(而该错误是在1.4.1中提交的),建议尝试使用1.4.2版本。 - Nick Craver
@ecu - 很好 :) 我添加了一个答案,这样未来的谷歌搜索者就可以更容易地找到答案,因为扫描原因时评论似乎不那么受关注。 - Nick Craver
3个回答

3

1

编辑 - Nick是对的,它在1.4.2中被修复了。 http://jsfiddle.net/7wR2L/

您可以检测点击并跟踪其最后一个值。类似于..

$('.myInput').click(function() {
   var $file = $(this);
   if( $file.val() != $file.data('lastVal') ) {
     // different
   }
   $file.data('lastVal', $file.val() );
});

当使用文件输入来直接触发选择时,这确实有效。但是,如果使用另一个元素来触发文件选择,则文件输入元素不再注册“更改”事件。 - Rudy Lattae

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接