2011-08-24 15 views
6

Come alcuni di voi potrebbero già sapere, l'evento onchange di Internet Explorer è fondamentalmente rotto prima della versione 9. Anziché attivare quando si verifica una modifica, si attiva quando il campo di input perde lo stato attivo e presenta delle modifiche.Qual è la soluzione alternativa per onchange con gli input dei file?

Questo porta a vari soluzioni alternative per caselle di controllo e pulsanti di opzione ("utilizzare onclick invece") e campi di testo ("utilizzare invece keyup").

Tuttavia, sto riscontrando questo problema per un input di file, e non riesco a capire cosa devo fare per essere avvisato che un nuovo file è stato selezionato, subito dopo, e non quando l'utente fa clic altrove . Non riesco ad associarmi a un evento del mouse perché non è correlato al mouse; e non riesco a collegarmi a un evento di tastiera perché non è collegato nemmeno alla tastiera.

Sarei disposto ad utilizzare materiale specifico di IE se è in grado di risolvere il problema.


informazioni supplementari:

io uso jQuery 1.6 e il metodo live per fissare l'evento.

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

alcune chiacchiere su questo problema qui: http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –

+0

http://jsfiddle.net/c8JuC/1/ funziona su IE9 con IE7 emulato. – pimvdb

+0

@pimvdb, io uso 'live' perché genera una serie di input al volo e l'evento non viene attivato al momento giusto con esso (jquery 1.6). – zneak

risposta

3

utilizzare l'evento onFocus, combinato con un controllo per garantire che vi sia un valore. Questo funziona perché dopo che l'utente seleziona un file e la finestra di dialogo di selezione del file OS viene rimossa, lo stato attivo viene restituito all'elemento di input.

+0

Interessante. Ci proverò. – zneak

+1

Questo sarebbe, ovviamente, il codice di eccezione solo IE. Non funziona affatto in Firefox. –

Problemi correlati