Jak niektórzy z was mogą już wiedzieć, zdarzenie onchange
programu Internet Explorer jest zasadniczo zepsute przed wersją 9. Zamiast wyzwalania, gdy nastąpi zmiana, wyzwala się, gdy pole wejściowe traci ostrość i zmienia się.Co to jest obejście dla wymiany z użyciem plików wejściowych?
To prowadzi do różnych sposobów obejścia pól wyboru i przycisków opcji ("użyj zamiast nich" onclick
") i pól tekstowych (" użyj zamiast tego keyup
").
Mam jednak problem z wprowadzeniem pliku i nie mogę określić, co robię, aby otrzymać powiadomienie, że nowy plik został wybrany, tuż po tym, jak został zrobiony, a nie kiedy użytkownik kliknie gdzie indziej . Nie mogę dołączyć do zdarzenia myszy, ponieważ nie jest ono powiązane z myszą; i nie mogę dołączyć do zdarzenia na klawiaturze, ponieważ nie jest to związane z klawiaturą.
Byłbym skłonny użyć rzeczy specyficznych dla IE, jeśli to rozwiąże problem.
Dodatkowe informacje:
używam jQuery 1.6 i metoda live
dołączyć zdarzenie.
$(".upload").live("change", function() { /* stuff here */ });
trochę gadać na temat tego problemu tutaj: http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –
http://jsfiddle.net/c8JuC/1/ działa na IE9 z emulacją IE7. – pimvdb
@pimvdb, używam 'live', ponieważ generuję pęczek danych wejściowych w locie, a zdarzenie nie jest uruchamiane we właściwym momencie (jquery 1.6). – zneak