jquery如何检测对文件输入元素的更改?

one*_*boi 2 html javascript jquery html5 file

我正在构建一个Web应用程序的图像上传功能,并使用以下事件处理程序:

$('input:file').change(function(){
    //handle input change
});
Run Code Online (Sandbox Code Playgroud)

我发现如果我尝试将相同的图像上传两次,则不会调用处理程序,这是有道理的,因为从技术上讲,输入没有改变.但我想知道,为了触发变革需要做些什么?以下是我正在寻找的一些例子:

  • 更改文件名
  • 无论文件名如何,都会更改文件内容
  • 更改文件类型

以下哪一项会导致文件作为更改的文件被接收?还是有其他场景吗?

Sha*_*k D 5

请参阅此链接.

输入类型 - 文件:

当内容发生更改时会触发onchange事件.如果用户在Internet Explorer中键入路径(不使用"浏览"按钮),则只有在元素失去焦点时才会触发onchange事件.因此,使用onpropertychange事件来检测Internet Explorer中的修改.

MSDN参考

当对象或选择的内容发生更改时触发.

我的测试结果:

  1. 更改文件名:更改火灾.
  2. 更改内容:保持文件名相同,更改事件不会触发.
  3. 更改文件类型:保持文件名相同,更改触发.
  4. IE 9,10中,如果您尝试更改文件名(在输入字段中),则会触发更改事件并清除文件名字段.

因此,故事的道德是,通过内容更改,它们意味着文件名更改.