2012-01-23 60 views
6

而不是使用input type="file" html標記,是否可以通過單擊input type="button"調出choose a file to upload對話框?然後,當從choose a file to upload對話框中選擇文件時,文件路徑將被插入到常規html input type="text"標記中?按鈕顯示選擇要上傳的文件對話框

我似乎gmail做了類似的事情,但沒有按鈕和文本輸入,他們只是有一個鏈接add file或類似的東西。單擊該鏈接時,將顯示select file(s) to upload by mail.google.com對話框。單擊文件時,屏幕上會顯示文件名稱。

他們是怎麼做到的?

+1

如果你在Gmail中右鍵點擊「附加文件」,你會發現他們是用Flash做的。 – Aknosis

回答

3

我想大多數瀏覽器都出於安全目的鎖定了這個。按鈕和文本框可以通過JavaScript進行操作。文件輸入框不能,並且有很好的理由;想象一下,如果一個javascript可以打開一個對話框,將路徑設置爲系統上的一個敏感文件,然後模擬按鈕點擊下載文件!


順便說一句,如果你正在尋找的風格,也許這會工作:http://www.quirksmode.org/dom/inputfile.html

+0

gmail是否做了類似的事情,但不是使用按鈕和文本輸入類型,而是使用鏈接,並可能使用span或div標籤來顯示所選文件。鏈接顯示上傳對話框的位置? – oshirowanen

+1

我相信GMail使用Flash作爲他們的「附加」功能。如果你禁用Flash插件,它會添加好的文件輸入。 – Sam

1

檢查此琴:http://jsfiddle.net/A4BS7/1/

注:

一)這可能不是對舊的瀏覽器(IE爲主)不火的文件輸入更改事件很好地工作。

b)要使上傳按預期工作,您需要在表單中包含<input type="file">元素。文本元素可用於最好顯示選定的文件。

+0

如何將上傳的文件值添加到另一個文件值? – JohnB

4
<input type="file" style="display:none;" id="inputfile"/> 
<a href="javascript:document.getElementById('inputfile').click(); ">try this</a> 

試試這個。我認爲它很有用.. :)

+0

雖然代碼是讚賞,它應該始終有一個相應的解釋。這不需要太長時間,一條線很好,但它是必需的。我已經從適當隊列中到達,因爲這是自動標記的。保持高質量的答案將有助於防止這種情況發生。 – Veedrac

+0

簡單而輝煌! – Sllouyssgort

+0

謝謝@Sllouyssgort –

相關問題