2012-05-17 2 views
6

Je veux personnaliser le bouton d'entrée de fichier, donc j'utiliser ce code pour créer un élément d'entrée de fichierDynamiquement créer élément d'entrée de fichier

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

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

Cependant, lorsque je clique sur créer, il ne montre rien.

+0

Vous obtenez une erreur, non? De plus, votre code n'essaie pas de * montrer * une entrée, mais seulement * crée * un. – Bergi

+0

Vous n'êtes également pas en mesure de cliquer sur une entrée de fichier en utilisant jquery; ce n'est pas possible pour des raisons de sécurité. – Daedalus

+0

@Daedalus - input.click(); va exécuter un événement click sur l'élément DOM 'input' – user1789573

Répondre

8

Vous créez le nouvel élément DOM, mais vous ne l'attachez pas au DOM. Vous avez besoin de quelque chose comme:

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

Vous pouvez voir comment cela fonctionne dans un jsFiddle mal fait ici: http://jsfiddle.net/JQHPV/2/

+0

merci Marc, mais je ne veux pas montrer cet élément en face, comment cela peut-il être fait? – panda

+0

@PandaYang, Ajoutez CSS pour le cacher: 'input {display: none}', et quand cela fonctionne pour vous, n'hésitez pas à approuver cette solution. – Marc

+0

J'ai essayé le css, ça ne marchera pas, parce que quand le bouton d'entrée est caché, la fenêtre qu'il montre aussi se cache. J'ai essayé une autre méthode, utilisez la largeur et la position pour minimiser la taille de cet élément d'entrée et trouver une image qui se chevauche. Merci aussi pour votre aide. – panda