2012-05-17 14 views
6

voglio personalizzare il pulsante di input file, in modo che uso questo codice per creare un elemento di input file didinamicamente creare elemento di input file di

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

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

Tuttavia, quando lo scatto a creare, si vede nulla.

+0

che stai ricevendo un errore, non è vero? Inoltre, il tuo codice non tenta di * mostrare * un input, solo * crea * uno. – Bergi

+0

Non è inoltre possibile fare clic su un file con jquery; non è possibile per ragioni di sicurezza – Daedalus

+0

@Daedalus - input.click(); eseguirà un evento click sull'elemento 'input' del DOM – user1789573

risposta

8

Stai creando il nuovo elemento DOM, ma non lo stai collegando al DOM. Hai bisogno di qualcosa di simile:

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

Si può vedere come questo funziona in un JSFiddle mal fatto qui: http://jsfiddle.net/JQHPV/2/

+0

grazie Marc, ma non voglio mostrare questo elemento in primo piano, come si può fare? – panda

+0

@PandaYang, Aggiungi CSS per nasconderlo: 'input {display: none}', e quando ciò funziona per te, non esitare ad approvare questa soluzione. – Marc

+0

Ho provato il css, non funzionerà, perché quando il pulsante di input è nascosto, anche la finestra che mostra viene nascosta. Ho provato un altro metodo, utilizzare la larghezza e la posizione per ridurre al minimo le dimensioni di questo elemento di input e trovare un'immagine che si sovrapponga. anche grazie per il tuo aiuto – panda

Problemi correlati