2011-06-09 23 views
23

Tengo que abrir el cuadro de diálogo de carga de archivos haciendo clic en otro botón, es decir, oculto el control de carga de archivos (visibilidad: oculto) y al hacer clic en otro botón quiero abrir ese diálogo. A continuación se muestra el código que estoy teniendo:abrir el cuadro de diálogo de carga de archivos al hacer clic

<input type="file" style="visibility: hidden;" /> 

A continuación se muestra el código JavaScript:

$('#button').click(function() { 
    $('input[type=file]').click(); 
}); 

Se está trabajando bien en Firefox 4 e IE8 pero en chrome12 no está funcionando es decir, el diálogo no es siendo abierto ¿Alguna idea de por qué?

Respuesta

0

Debe colocar la entrada [archivo] justo encima de su control personalizado. Y luego vincularlo a él en clic.

También haga que el tamaño de letra sea más grande, ya que solo de esta manera puede aumentar su altura.

6

En su ejemplo, su entrada de archivo no tenía una identificación, pero está intentando hacer referencia a ella con #input. Esto funciona para mí:

$('#button').click(function() { 
    $('input[type=file]').click(); 
}); 
+0

Lo siento, lo eliminé. –

+1

en realidad esto no funciona a partir de ahora, ya sea a partir de las actualizaciones de jquery ya sea desde las actualizaciones del navegador –

8

Probado hoy el código simple dada en la pregunta y la situación ha cambiado:

  • IE9: trabaja
  • Chrome23: trabaja
  • Firefox15: obras

Solo hay un IE capturable .click() es una operación de bloqueo mientras que en otros navegadores no lo es.

+0

¿Puede explicar más qué quiere decir con la operación de bloqueo? – william

+0

'fileElement.click(); var x = fileElement.value; '- en IE esto funcionará como se esperaba, pero en otros navegadores' x' estará vacío. –

Cuestiones relacionadas