2009-07-22 28 views

答えて

23

は - それは、あなたのブラウザが与える名前だけですそれのための。ブラウザは自由にファイルアップロードコントロールを実装することができます。たとえば、Safariでは「Choose File」と呼ばれ、おそらく使用しているものの反対側にあります。

the technique outlined on QuirksModeを使用してアップロードコントロールのカスタム表示を実装できますが、これはボタンのテキストを変更するだけではありません。

2

入力タイプ=「ファイル」フィールドには、それはすべてのブラウザ上で異なる動作をするので、それはスタイリングすることができない、または少しスタイリングすることができ、再びブラウザによっては非常にトリッキーです。サイズ変更が難しい(ブラウザによっては、上書きできない最小サイズがあるかもしれない)。

ただし、回避策があります。最高のものは私の意見でthis oneです(結果はhereです)。

0

いいえ、ファイルアップロード入力のテキストを変更することはできません。しかし、ボタンの上にイメージを重ねるいくつかのトリックがあります。

1

AFAIKボタンのテキストを変更することはできません。ブラウザでは、ハードコードされています。

しかし、フォーム上のdiferentテキスト/画像でボタンを配置するには、いくつかの回避策があります。ボタンは、「ブラウズボタン」と呼ばれていません

link

0

Uploadifyを使用することもできます。これは素晴らしいjQueryアップロードプラグインです。複数のファイルをアップロードして、簡単にファイルフィールドをスタイルすることもできます。

<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();"/> 

ない素敵な探して解決策を、それが動作します: http://www.uploadify.com

5

のJavaScriptのビットは、それの世話をします。

+0

JSが利用できない場合、これは完全に使用できなくなります。 (HTMLも無効です)。 – Quentin

+0

@David Dorwad:JSが利用できないときにJSが動作しないという明白なことを指摘してくれてありがとう。現実の事例はこれが起こることは非常にまれです。 また、私は誰も盲目的にこれをコピー&ペーストして直ちに使用するつもりはなく、目標を達成するための1つの可能な方法を示すためのポインタとして意図されていました。しかし、ちょっと、投稿をやめてくれてありがとう。 – korona

+0

JSが利用できない場合、HTMLは機能しません。まともに書かれた解決策は優雅に劣化し、何もしなかったボタンがある位置に戻ることはありません。 – Quentin

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/

+1

私はこのアプローチを使い、実際にそれに慣れています。しかし、変更する主なものがあります。その入力にdisplay:noneを適用した場合、クリックは機能しませんので、不透明度を高くすると良いでしょう:0 ;.ありがとう!!! – cbarg

+0

古いブラウザでは不透明感がサポートされていないので、注意してください。 –

+0

私は別の変数を送信したい場合にどうなるのだろうか、それを 'group_id'と呼ぶことにしましょう。どうすればいいですか? HTMLの cbarg

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

+1

ボタンが 'type =" button "'であることを確認するか、フォームを送信します。 – Mihai

+0

JavaScriptは既にそれを防ぎます。 – Thielicious

5
  1. ラップタグを有する<input type="file">;
  2. <span>または<a>のように、ラベル内に(必要なテキストを含む)タグを追加します。
  3. このタグをボタンのように見せます。
  4. display: noneinput[type="file"]を表示しないようにします。
関連する問題