2012-05-17 116 views
6

我想自定义文件输入按钮,所以我用这个代码创建一个文件输入元素动态创建文件输入元素

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

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

然而,当我点击创建,它说明不了什么。

+0

你得到一个错误,不是吗?此外,您的代码不会尝试*显示*输入,它只会*创建*一个。 – Bergi

+0

您也无法使用jquery单击文件输入;出于安全原因,这是不可能的。 – Daedalus

+0

@Daedalus - input.click();将在DOM元素的'输入'上执行一个点击事件 – user1789573

回答

8

您正在创建新的DOM元素,但没有将其附加到DOM。你需要的东西,如:

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

你可以看到这是如何在这里工作在做不好的jsfiddle: http://jsfiddle.net/JQHPV/2/

+0

谢谢Marc,但我不想在前面展示这个元素,这可以怎么做? – panda

+0

@PandaYang,添加CSS来隐藏它:'input {display:none}',当它适用于您时,请随时批准此解决方案。 – Marc

+0

我已经尝试了CSS,它不会工作,因为当输入按钮被隐藏时,它显示的窗口也被隐藏。我尝试了另一种方法,使用宽度和位置来最小化此输入元素的大小,并找到与其重叠的图片。也感谢你的帮助。 – panda