2011-08-24 32 views
6

Như một số bạn đã biết, sự kiện onchange của Internet Explorer bị hỏng trước phiên bản 9. Thay vì kích hoạt khi thay đổi xảy ra, nó sẽ kích hoạt khi trường nhập mất tiêu điểm và thay đổi.Giải pháp thay thế với đầu vào tệp là gì?

Điều này dẫn đến nhiều cách giải quyết khác nhau cho hộp kiểm và nút radio ("sử dụng onclick thay thế") và trường văn bản ("sử dụng keyup thay thế").

Tuy nhiên, tôi đang gặp vấn đề với đầu vào tệp và tôi không thể biết được mình phải làm gì để được thông báo rằng tệp mới đã được chọn, ngay sau khi đã thực hiện và không phải khi người dùng nhấp vào nơi khác . Tôi không thể đính kèm bản thân mình vào một sự kiện chuột vì nó không liên quan đến chuột; và tôi không thể đính kèm bản thân mình vào một sự kiện bàn phím vì nó không liên quan đến bàn phím.

Tôi sẵn sàng sử dụng các nội dung cụ thể của IE nếu có thể giải quyết được sự cố.


infos khác:

tôi sử dụng jQuery 1.6 và phương pháp live gắn sự kiện này.

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

một số cuộc trò chuyện về vấn đề này tại đây: http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –

+0

http://jsfiddle.net/c8JuC/1/ hoạt động trên IE9 với IE7 mô phỏng. – pimvdb

+0

@pimvdb, tôi sử dụng 'live' bởi vì tôi tạo ra một loạt các đầu vào một cách nhanh chóng và sự kiện không được kích hoạt vào đúng thời điểm với nó (jquery 1.6). – zneak

Trả lời

3

Sử dụng sự kiện onFocus, kết hợp với séc để đảm bảo rằng có giá trị. Điều này hoạt động vì sau khi người dùng chọn một tệp và hộp thoại chọn tệp hệ điều hành bị loại bỏ, tiêu điểm được trả về phần tử đầu vào.

+0

Thú vị. Tôi sẽ thử xem. – zneak

+1

Tất nhiên, điều này sẽ là mã ngoại lệ duy nhất của IE. Nó không hoạt động chút nào trong Firefox. –

Các vấn đề liên quan