2012-05-17 7 views
6

quiero personalizar el botón de entrada de archivo, así que utilizo este código para crear un elemento de entrada de archivoCrear dinámicamente elemento de entrada de archivo

function inputBtn(){ 
    var input=document.createElement('input'); 
    input.type="file"; 
    setTimeout(function(){ 
     $(input).click(); 
    },200); 
} 

<button id="ifile" onclick="inputBtn()">create</button> 

Sin embargo, al hacer clic en crear, no muestra nada.

+0

que está recibiendo un error, ¿verdad? Además, su código no intenta * mostrar * una entrada, solo * crea * uno. – Bergi

+0

Tampoco puede hacer clic en una entrada de archivo usando jquery; no es posible por razones de seguridad. – Daedalus

+0

@Daedalus - input.click(); ejecutará un evento de clic en la 'entrada' del elemento DOM – user1789573

Respuesta

8

Está creando el nuevo elemento DOM, pero no lo está asociando al DOM. Es necesario algo así como:

document.getElementById('target_div').appendChild(input); 

Se puede ver cómo funciona esto en un jsFiddle mal hecho aquí: http://jsfiddle.net/JQHPV/2/

+0

gracias Marc, pero no quiero mostrar este elemento al frente, ¿cómo se puede hacer esto? – panda

+0

@PandaYang, agregue CSS para ocultarlo: 'input {display: none}', y cuando le funcione, puede aprobar esta solución. – Marc

+0

He probado el CSS, no funcionará, porque cuando se oculta el botón de entrada, también se oculta la ventana que muestra. He intentado con otro método, use el ancho y la posición para minimizar el tamaño de este elemento de entrada y encontrar una imagen que se superponga. también gracias por tu ayuda. – panda

Cuestiones relacionadas