Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/02/2014, 03:47
Avatar de supercoco79
supercoco79
 
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 11 años, 7 meses
Puntos: 35
Respuesta: Como perzonalizar un boton examinar

Se puede hacer. Y al menos que yo sepa hay dos formas de hacerlo, usando solo CSS o una combinación de CSS con Javascript (JQuery).

Te digo cómo se haría con esta segunda opción.

Insertamos un elemento <button> dentro de nuestro código, que será visible y será el que lance el cuadro para elegir el archivo:

Código HTML:
<button type="button" class="upload_btn">Elegir imagen</button> 
La segunda parte, sería la parte del <input>

Código HTML:
<input type="file" name="file_name" class="upload_file invisible" accept="image/*"> 
CONSIDERACIONES: 1) El atributo accept no es soportado por IE9 y anteriores, y tampoco para Safari 5. 2) He añadido la clase 'invisible' para ocultarlo

La parte de CSS para ocultar el input es la siguiente:

Código:
.invisible{visibility:hidden;height:0;width:0;}
¿El por qué no se utiliza 'display:none'? Porque Safari impide acceder a los eventos de un elemento not displayed, por eso tenemos que engañarle un poco

Y ahora, la parte de JQuery:

Código HTML:
<script type="text/javascript">
$(".upload_btn").click(function(event){
     $(".upload_file").click();
     event.preventDefault();
});
//Si quieres hacer submit automático después de elegir el archivo:
$(".upload_file").change(function(event){
    $("#form_id").submit(); // donde form_id es la id de tu formulario
    event.preventDefault();
});
</script> 
El uso de event.preventDefault() es necesario para que los eventos que tienen por defecto los elementos no se ejecuten.

La parte pura de CSS se haría poniendo debajo justo de un <div> que simule un botón el <input type="file">, jugando con las posiciones y la opacidad. De esta manera, cuando se hiciera click en el div, se estaría haciendo click realmente en el input.

Espero haberte ayudado.

Saludos.
__________________
Yesterday was the only easy day. Deportes de aventura