2011-08-24 42 views
6

正如您可能已經知道的那樣,Internet Explorer的onchange事件在版本9之前基本上被打破了。當發生更改時,不會觸發它,而會在輸入字段丟失焦點併發生更改時觸發。帶文件輸入的onchange的解決方法是什麼?

這導致了複選框和單選按鈕(「使用onclick」)和文本字段(「使用keyup」代替)的各種解決方法。

但是,我遇到了一個文件輸入的問題,我不知道我做了什麼來通知一個新的文件已被選中,緊隨其後,而不是當用戶點擊其他地方。我無法將自己附加到鼠標事件上,因爲它與鼠標無關;而且我無法將自己附加到鍵盤事件上,因爲它與鍵盤無關。

如果能解決問題,我願意使用特定於IE的東西。


附加的相關信息:

使用jQuery 1.6和live方法附加事件。

$(".upload").live("change", function() { /* stuff here */ }); 
+0

這裏有一些關於這個問題的喋喋不休:http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –

+0

http://jsfiddle.net/c8JuC/1/適用於使用IE7仿真的IE9。 – pimvdb

+0

@pimvdb,我使用'live',因爲我在運行中產生了一堆輸入,並且事件並沒有在正確的時刻被它觸發(jquery 1.6)。 – zneak

回答

3

使用onFocus事件,並結合檢查以確保存在值。這是因爲在用戶選擇文件並且OS文件選擇對話框被移除之後,焦點被返回到輸入元素。

+0

有趣。我會嘗試的。 – zneak

+1

這當然是僅限IE的異常代碼。它在Firefox中完全不起作用。 –

相關問題