jquery如何检测文件输入元素的变化

how does jquery detect a change to a file input element?

本文关键字:输入 文件 元素 变化 检测 何检测 jquery      更新时间:2023-09-26

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

$('input:file').change(function(){
    //handle input change
});

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

  • 更改文件名
  • 改变文件内容,不管文件名
  • 文件类型更改

下列哪一项会导致文件被接收为已更改的文件?或者还有其他情况吗?

参考这个链接

输入类型- File:

当内容发生变化时触发onchange事件。如果用户在Internet中键入路径(不使用Browse按钮)资源管理器中,则onchange事件仅在元素丢失时触发焦点。因此,使用onpropertychange事件来检测

MSDN参考

当对象或选择的内容发生变化时触发。

我的测试结果:

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

这个故事的寓意是,内容的改变意味着文件名的改变