2009-07-22 36 views

回答

23

按鈕不叫「瀏覽按鈕」 - 這只是你的瀏覽器提供的名字爲了它。不管他們喜歡,瀏覽器都可以自由地實現文件上傳控制。例如,在Safari中,它被稱爲「選擇文件」,它與您可能使用的任何對象相反。

您可以使用the technique outlined on QuirksMode實現上傳控件的自定義外觀,但這不僅僅是更改按鈕的文本。

2

輸入類型=「文件」字段是非常棘手的,因爲它表現不同上每一個瀏覽器,不能病急亂投醫,或可樣式一點,這取決於再次瀏覽器;並且很難重新調整大小(取決於瀏覽器,它可能會有一個最小的大小不能被覆蓋)。

雖然有解決方法。最好的是在我看來this one(結果是here)。

0

不,您不能更改文件上傳輸入的文本。但是在按鈕上覆蓋圖片還有一些技巧。

1

AFAIK您無法更改按鈕文本,它在瀏覽器中被硬編碼。

但也有一些變通方法把一個按鈕,diferent文字/圖像的形式:

link

0

你也可以使用uploadify,這是一個很棒的jQuery上傳插件,它可以讓你上傳多個文件,也可以很容易地設置文件的樣式。 http://www.uploadify.com

5

JavaScript的一個位將照顧它:

<script language="JavaScript" type="text/javascript"> 
function HandleBrowseClick() 
{ 
    var fileinput = document.getElementById("browse"); 
    fileinput.click(); 
    var textinput = document.getElementById("filename"); 
    textinput.value = fileinput.value; 
} 
</script> 

<input type="file" id="browse" name="fileupload" style="display: none"/> 
<input type="text" id="filename" readonly="true"/> 
<input type="button" value="Click to select file" id="fakeBrowse" onclick="HandleBrowseClick();"/> 

不是最好看的解決方案,但它的工作原理。

+0

如果JS不可用,這將完全無法使用。 (HTML也是無效的)。 – Quentin 2009-07-22 08:50:43

+0

@David Dorwad:感謝您指出顯而易見(當JS不可用時JS不工作)。然而,真實世界的情況是非常罕見的。 此外,我並不打算讓任何人盲目地複製和粘貼這個並馬上使用它,它的目的是作爲一個指針來展示實現目標的一種可能方式。但是,嘿,謝謝你阻止我再次發帖。 – korona 2009-07-22 09:13:30

+0

問題是,如果JS不可用,HTML不起作用。一個體面的書面解決方案會優雅地退化,而不會回落到一個沒有任何按鈕的位置。 – Quentin 2009-07-22 13:22:38

28
<script language="JavaScript" type="text/javascript"> 
function HandleBrowseClick() 
{ 
    var fileinput = document.getElementById("browse"); 
    fileinput.click(); 
} 
function Handlechange() 
{ 
var fileinput = document.getElementById("browse"); 
var textinput = document.getElementById("filename"); 
textinput.value = fileinput.value; 
} 
</script> 

<input type="file" id="browse" name="fileupload" style="display: none" onChange="Handlechange();"/> 
<input type="text" id="filename" readonly="true"/> 
<input type="button" value="Click to select file" id="fakeBrowse" onclick="HandleBrowseClick();"/> 

http://jsfiddle.net/J8ekg/

3

你可以用一個簡單的CSS/JQ解決方法做到這一點: 創建一個假的按鈕觸發的瀏覽按鈕被隱藏。

HTML

<input type="file"/> 
<button>Open</button> 

CSS

input { display: none } 

jQuery的

$('button').click(function(e) { 
    e.preventDefault(); // prevents submitting 
    $('input').trigger('click'); 
}); 

demo

5
  1. 總結帶有<label>標籤的<input type="file">;
  2. 在標籤內部添加一個標籤(包含您需要的文本),如<span><a>;
  3. 使此標記看起來像一個按鈕;
  4. 通過display: none使input[type="file"]隱形。
相關問題