2011-12-16 19 views
11

Tengo algunos problemas para hacer que la entrada del archivo funcione como yo quiero. El elemento de archivo existe de 2 partes, el campo de texto y el botón Examinar. En otros navegadores que no sean IE, al hacer clic en cualquiera de ellos se abre una ventana donde puede seleccionar sus archivos. En IE, sin embargo, solo se abre cuando hago clic en el botón Examinar. Si hago clic en el campo de texto junto a él, tengo que hacer doble clic para que se abra la ventana. ¿Hay alguna manera de solucionar esto con javascript, por lo que un solo clic en el campo de texto también abrirá la ventana? Intenté lo siguiente, pero no funcionó. (Código se simplifica mucho del ejemplo real)Abrir la ventana de exploración en IE en la entrada de archivo con un solo clic

HTML: <input id="file" name="file" type="file"/>

JS/jQuery:

$("#file").click(function(){ 
    $(this).trigger("dblclick"); 
}); 

$("#file").dblclick(function(){ 
    alert("Double"); 
}); 

Ahora el código anterior indica al "doble", pero no se abre la ventana. ¿Hay alguna manera de arreglar esto?

Gracias de antemano.

Respuesta

9

Como todo el control es nativo del navegador (y nunca se expone como un cuadro de texto con un botón más) simplemente no tiene acceso a métodos/eventos que le permitirán invocar el botón de carga. Creo que esto es principalmente para evitar que los sitios engañen al usuario para que cargue archivos no destinados.

Si puede tomarse un poco de tiempo para implementar una solución alternativa, this hace un buen trabajo al crear un componente de carga bastante agradable que es más fácil de administrar. Estoy seguro de que un google rápido te mostrará muchos otros ejemplos sobre cómo diseñar el componente de carga de archivos.

+2

Tuve este mismo problema, mi entrada personalizada se veía bien, pero los usuarios de IE tenían que hacer doble clic. Para aquellos demasiado perezosos para hacer clic en el enlace: Haga que el tamaño de fuente de su elemento de entrada de archivo sea ENORME (el artículo sugirió 100px, necesitaba 200px para mi formulario. Hace explotar el botón para que la parte de entrada de texto se vuelva diminuta. ¡Gracias! – chiliNUT

0

Acabo de probar su código con JSFiddle en IE6 (http://jsfiddle.net/SUWRK/) y, desde mi entender, funciona como espera ... La alerta aparece en un evento de un solo clic (tenga en cuenta que es complicado atrapar el evento dblclick en IE < 9 - vea https://gist.github.com/399624).

¿Estás seguro de que no pasa nada más con el conjunto de códigos más grande?

+0

El resultado que quiero es que la ventana de exploración se abra, no para alertar al "Doble". La alerta fue solo para mostrar que realmente activa el doble clic (que es necesario para abrir la ventana de exploración) pero no abre la ventana. – Ilians

+1

Parece que he entendido mal tu pregunta. Me disculpo por eso. De cualquier manera, no puede controlar el componente de carga de archivos en la medida que lo requiera. Vea mi otra respuesta (ya que el cuadro de comentarios es demasiado corto para toda la respuesta). – lsoliveira

Cuestiones relacionadas