2011-07-08 90 views
9

這是我在Chrome中注意到的奇怪事情。如果用戶選擇一個文件,然後再次選擇同一個文件再次打開文件對話框,Chrome瀏覽器不會在firefox執行時觸發onchange事件。輸入文件onchange事件未在chrome中被觸發

有人注意到它嗎?

回答

3

這是Chrome的一個已知功能,快速的Google on the topic會帶來一些有趣的討論。

這對我來說很有意義的change事件不會火,因爲一切都沒有改變(你選擇同一文件)

至於你的問題,正是你問?你正在尋找一種方法來改變這種行爲,或者你只是想知道我們是否也注意到了這一點?

如果你想解決這個問題,你可以簡單地在你的Javascript中創建一個新的文件輸入並替換前一個。這樣你的change事件是保證射擊。

+4

其實我輸入值正好被設置爲空字符串,並將其重新設置,因此,如果用戶將選擇相同的文件我會得到事件。我不得不說,我不同意你這樣的預期。我應該得到一些通知,說明用戶選擇了一個文件(任何文件,即使它是同一個文件),但是在這種方法中,你(程序員)不知道這個動作發生了。 – Amir

3
function resetFileInput($element) { 
    var clone = $element.clone(); 
    $element.replaceWith(clone); 
} 

然後用:

$('#element_id').on('change', function(){ 
... 
}); 

運作良好,對我來說!

0

一個更簡單的方法來重置爲我的作品以及輸入文件:

document.getElementById('idOfInput').value = ''; 
+0

請注意,這在IE(IE8-IE11 +)中不起作用,因爲文件輸入標記爲「只讀」。另一種方法是將它[包裝在窗體中並重置窗體](http://stackoverflow.com/a/14587296/1030702)。 – Bob