2012-05-17 177 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