2011-08-25 13 views

Respuesta

6

Editar: Como otros han señalado Firefox no suuport el método siguiente me remito al siguiente enlace http://www.quirksmode.org/dom/inputfile.html

La siguiente es una solución bastante simple . Sin embargo, le aconsejo que agregue una clase a la etiqueta. Básicamente que el estilo de la etiqueta en lugar de la entrada para evitar problemas con el navegador cruz y anchura y altura errores:

<label> 
    <input type=file> 
</label> 

CSS

label input{-moz-opacity:0 ;filter:alpha(opacity: 0);opacity: 0;} 
label {background:green;width:200px;height:100px;display:block; /* more styles here */} 

http://jsfiddle.net/DVLxp/

+0

Esto funciona perfectamente. Terminé cambiando el tamaño de mi imagen para adaptarme al tamaño del botón de carga con otro ejemplo, ¡pero esto es genial! ¡y muy simple! – Fostah

+5

En Firefox no puede hacer clic en la etiqueta para ingresar el archivo – Znarkus

+0

En Firefox, no se puede hacer clic en toda el área verde y no se muestra un puntero. – chovy

2

Qué sitios web a menudo lo hacen cuando necesitan un "a medida" widget de carga de archivos: tiene oculto el campo "real" de carga de archivos. Agregue un campo de texto que mostrará el valor actual del campo de carga de archivos y un botón que activará la selección de archivos en el campo de carga de archivos. Aquí un ejemplo:

<input id="file" type="file" style="display: none;" 
     onchange="document.getElementById('text').value = this.value;"> 

<input id="text" type="text" readonly><input type="button" 
     onclick="document.getElementById('file').click();" value="Choose file"> 
+0

+1 Esto funcionó perfectamente para mí y parece ser la solución más simple y rápida. Gracias – jnthnjns

1

En cuanto a mí, Zhenya Shevchenko brindó una de las mejores soluciones de trabajo. Usando su método, podemos crear botón de entrada de archivos entre navegadores: http://jsfiddle.net/JHcFR/

<div class="fileInput"> 
    <input type="file" /> 
</div> 

.fileInput { 
    overflow: hidden; width: 500px; height: 200px; background: red; 
} 
.fileInput input { 
    font-size: 200px; opacity: 0; 
    float: right; filter: alpha(opacity=0); /*IE*/ 
} 
3

prueba este: http://jsfiddle.net/CnHj5/ funciona en Firefox y un bonito cursor del puntero está disponible.

HTML:

<div class="upload"> 
    <input class="upload" type="file" /> 
</div> 

CSS:

input.upload { 
    -moz-opacity:0; 
    filter:alpha(opacity: 0); 
    opacity: 0; 
    position: absolute; 
    right:0; 
    font-size: 200px; 
    cursor: pointer; 
} 
div.upload { 
    background-color:green; 
    width:200px; 
    height:100px; 
    position: relative; 
    display:block; 
    overflow:hidden;} 
Cuestiones relacionadas