Firefox:onchange 触发而不改变

Firefox: onchange triggers without changing

在 WebKit 中 onchange 仅在文件更改时触发,在 Firefox 中则不会。 这是一个已知问题,但我只发现如何使 chrome 的行为像 Firefox 而不是相反。

var control = $('label.empty > input');    
$(control).on('change', function(){});

我怎样才能让它在 firefox 中只在文件发生变化时工作?

Related.

你可以试试这个,

如果文件输入是

<input type="file" id="fileId"/>

Javascript 代码 -

document.getElementById("fileId").addEventListener("change", function(){
console.log("file changed...");
// put you on change code here
},false);

您可以存储文件输入的旧值并将其检查为新值。
如果匹配,return;否则就是新的。

document.querySelector('input').addEventListener('change', function(){
    if(this.__value__===this.value) return;
    this.__value__=this.value;
    alert('new One!');
    });
<input type="file">