これは私がクロムに気づいた不思議なことです。ユーザーがファイルを選択してから再び同じファイルを選択して再度ファイルダイアログを開くと、firefoxはonchangeイベントを発生させません。入力ファイルの変更イベントがクロムで発生していない
誰もが気づいた?
これは私がクロムに気づいた不思議なことです。ユーザーがファイルを選択してから再び同じファイルを選択して再度ファイルダイアログを開くと、firefoxはonchangeイベントを発生させません。入力ファイルの変更イベントがクロムで発生していない
誰もが気づいた?
これはChromeの既知の機能であり、すばやくGoogle on the topicで興味深い議論が展開されます。
それは何も、あなたが正確に何を求めている、あなたの質問については(あなたが同じファイルを選択している)
を変更していないので、change
イベントを発生しないことを私には理にかなって?あなたはこの振る舞いを変える方法を探していますか、それとも私たちもこれに気付いたかどうかだけ知りたいのですか?
この現象を回避したい場合は、Javascriptで新しいファイル入力を作成し、以前のものを置き換えることができます。この方法であなたのchange
イベントが発生する必要があります。
function resetFileInput($element) {
var clone = $element.clone();
$element.replaceWith(clone);
}
そして使用:
私のためによく働い$('#element_id').on('change', function(){
...
});
!
私のためにうまく機能し、入力ファイルをリセットする簡単な解決策:
document.getElementById('idOfInput').value = '';
ファイル入力が 'readonly'とマークされているので、これはIE(IE8-IE11 +)では機能しません。別の方法は[フォームにラップしてフォームをリセットする]ことです(http://stackoverflow.com/a/14587296/1030702)。 – Bob
をユーザーが、私は意志同じファイルを選択しますので、もし実際に、私はちょうど空の文字列に入力値を設定し、それをリセットイベントを取得します。私はあなたがこれが期待どおりに動作することに同意しないと言わなければならない。ユーザーがファイル(同じファイルであってもファイル)を選択したことを通知する必要がありますが、この方法では、このアクションが発生したことがわかりません。 – Amir