2011-08-24 9 views
6

Como algunos de ustedes ya saben, el evento onchange de Internet Explorer está fundamentalmente roto antes de la versión 9. En lugar de activarse cuando ocurre un cambio, se dispara cuando el campo de entrada pierde el foco y tiene cambios.¿Cuál es la solución para onchange con entradas de archivo?

Esto condujo a diversas soluciones para casillas de verificación y botones de radio ("utilizar onclick lugar") y campos de texto ("utilizar keyup lugar").

Sin embargo, estoy teniendo ese problema para una entrada de archivo, y no puedo entender qué hacer para recibir una notificación de que se ha seleccionado un nuevo archivo, justo después de hacerlo, y no cuando el usuario hace clic en otra parte . No me puedo conectar a un evento de mouse porque no está relacionado con el mouse; y no me puedo conectar a un evento de teclado porque tampoco está relacionado con el teclado.

Estaría dispuesto a usar cosas específicas de IE si puede resolver el problema.


informaciones adicionales:

I utilizan jQuery 1.6 y el método live para fijar el evento.

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

algunos parlotean sobre este problema aquí: http://stackoverflow.com/questions/2389341/jquery-change-event-to-input-file-on-ie –

+0

http://jsfiddle.net/c8JuC/1/ funciona en IE9 con IE7 emulado. – pimvdb

+0

@pimvdb, uso 'live' porque genero un montón de entradas sobre la marcha, y el evento no se dispara en el momento correcto con él (jquery 1.6). – zneak

Respuesta

3

utilizar el evento onFocus, combinado con una comprobación para asegurarse de que no es un valor. Esto funciona porque una vez que el usuario selecciona un archivo y se elimina el cuadro de diálogo de selección de archivos del sistema operativo, el foco se devuelve al elemento de entrada.

+0

Interesante. Voy a intentar eso. – zneak

+1

Esto sería, por supuesto, el código de excepción solo de IE. No funciona en absoluto en Firefox. –

Cuestiones relacionadas