<input type="file" value="Browse" name="avatar" id="id_avatar" />
を変更しようとしましたがvalue
、機能しません。ボタンのテキストをカスタマイズするには?
<input type="file" value="Browse" name="avatar" id="id_avatar" />
を変更しようとしましたがvalue
、機能しません。ボタンのテキストをカスタマイズするには?
回答:
使用ブートストラップFileStyle形式のファイルフィールドのスタイルを設定するために使用され、。Twitter Bootstrapと呼ばれるjQueryベースのコンポーネントライブラリのプラグインです。
使用例:
含める:
<script type="text/javascript" src="js/bootstrap-filestyle.min.js"> </script>
JavaScript経由:
$(":file").filestyle();
データ属性を介して:
<input type="file" class="filestyle" data-classButton="btn btn-primary" data-input="false" data-classIcon="icon-plus" data-buttonText="Your label here.">
代わりに画像を配置して、次のようにすることができます。
HTML:
<img src="/images/uploadButton.png" id="upfile1" style="cursor:pointer" />
<input type="file" id="file1" name="file1" style="display:none" />
jQuery:
$("#upfile1").click(function () {
$("#file1").trigger('click');
});
警告:IE9およびIE10では、JavaScriptを介して入力されたファイルでonClickをトリガーすると、フォームに「危険」のフラグが付けられ、JavaScriptで送信できなくなります。従来の方法で送信できるかどうかは不明です。
<input type="file"
asp.netグリッドビュー行を使用していますが、その行は動的に追加できます。そのため、画像をクリックしているときに(同じ行の)関連する入力クリックトリガーを呼び出すのは頭の痛い作業です。:/
ファイル入力を非表示にします。新しい入力を作成してクリックイベントをキャプチャし、非表示の入力に転送します。
<input type="button" id="loadFileXml" value="loadXml" onclick="document.getElementById('file').click();" />
<input type="file" style="display:none;" id="file" name="file"/>
;
と、最後にを削除する必要がありました。
「ファイルをアップロード...」というテキストはブラウザによって事前に定義されており、変更できません。これを回避する唯一の方法は、swfuploadのようなFlashまたはJavaベースのアップロードコンポーネントを使用することです。
作品すべてのブラウザで完全にそれはあまりにもあなたのために働くことを願っています。
HTML:
<input type="file" class="custom-file-input">
CSS:
.custom-file-input::-webkit-file-upload-button {
visibility: hidden;
}
.custom-file-input::before {
content: 'Select some files';
display: inline-block;
background: -webkit-linear-gradient(top, #f9f9f9, #e3e3e3);
border: 1px solid #999;
border-radius: 3px;
padding: 5px 8px;
outline: none;
white-space: nowrap;
-webkit-user-select: none;
cursor: pointer;
text-shadow: 1px 1px #fff;
font-weight: 700;
font-size: 10pt;
}
.custom-file-input:hover::before {
border-color: black;
}
.custom-file-input:active::before {
background: -webkit-linear-gradient(top, #e3e3e3, #f9f9f9);
}
content: 'Select some files';
希望するテキストで変更する''
Firefoxで動作しない場合は、入力の代わりにこれを使用します。
<label class="custom-file-input" for="Upload" >
</label>
<input id="Upload" type="file" multiple="multiple" name="_photos" accept="image/*" style="visibility: hidden">
<input id="uploadFile" placeholder="Choose File" disabled="disabled" />
<div class="fileUpload btn btn-primary">
<span>Your name</span>
<input id="uploadBtn" type="file" class="upload" />
</div>
JS
document.getElementById("uploadBtn").onchange = function () {
document.getElementById("uploadFile").value = this.value;
};
詳細http://geniuscarrier.com/how-to-style-a-html-file-upload-button-in-pure-css/
単に
<label class="btn btn-primary">
<i class="fa fa-image"></i> Your text here<input type="file" style="display: none;" name="image">
</label>
[スニペットで編集]
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<label class="btn btn-primary">
<i class="fa fa-image"></i> Your text here<input type="file" style="display: none;" name="image">
</label>
編集:私は今、あなたがボタンのテキストについて尋ねているコメントで、ファイルパスではなくわかります。私の悪い。この質問につまずいた誰かがそれを私が最初に行った方法で解釈する場合に備えて、私は元の回答を以下に残します。
2番目の編集:私は質問を誤解し、自分の回答は関連性がないと判断したため、この回答を削除しました。ただし、別の回答のコメントは、人々がまだこの回答を見たいと思っていることを示していたので、削除を取り消します。
私の元の答え私の元の(OPはボタンのテキストではなく、パスについて尋ねていると思いました):
これは、セキュリティ上の理由からサポートされている機能ではありません。Opera Webブラウザーはこれをサポートするために使用されていましたが、削除されました。これがサポートされている場合、何が可能かを考えてください。ファイルアップロード入力を含むページを作成し、機密ファイルへのパスを事前に入力してから、onload
イベントによってトリガーされるJavaScriptを使用してフォームを自動送信できます。これは、ユーザーがそれについて何かを行うには速すぎます。
<label>
キャプションに使用<form enctype='multipart/form-data' action='/uploads.php' method=post>
<label for=b1>
<u>Your</u> caption here
<input style='width:0px' type=file name=upfile id=b1
onchange='optionalExtraProcessing(b1.files[0])'
accept='image/png'>
</label>
</form>
これはjavascriptなしで動作します。ラベルはどんな複雑さでも、心ゆくまで飾ることができます。ラベルをクリックすると、クリックは自動的にファイル入力にリダイレクトされます。ファイル入力自体は、任意の方法で非表示にすることができます。ラベルをボタンのように表示したい場合は、次のような多くの解決策があります。
label u {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;
text-decoration: none;
color: initial;
}
<input type="file">
に、画像を追加すると<input style="position:absolute">
、そのスペースを占有します<input type="file">
次のCSSをファイル要素に使用します
position:relative;
opacity:0;
z-index:99;
レールを使用していて問題が発生した場合は、@ Fernando Koshによって投稿された元の回答からいくつかのヒントを追加したいと思います
application.jsを開き、以下の行を追加します
// = bootstrap-filestyle.minが必要
コーヒーを開いてこの行を追加します
$( ":file")。filestyle({buttonName: "btn-primary"、buttonBefore:true、buttonText: "Your text here"、icon:false});
あなたは単にいくつかのCSSトリックを追加することができます。あなたはjavascriptまたはより多くの入力ファイルを必要とせず、私は既存の値属性を保持します。cssのみを追加する必要があります。この解決策を試すことができます。
.btn-file-upload{
width: 187px;
position:relative;
}
.btn-file-upload:after{
content: attr(value);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 48%;
background: #795548;
color: white;
border-radius: 2px;
text-align: center;
font-size: 12px;
line-height: 2;
}
<input type="file" class="btn-file-upload" value="Uploadfile" />
私にとっては、bootstrap-filestyleでカスタムテキストを機能させません。ボタンの装飾には役立ちますが、テキストを変更するのは奇妙ですが、cssと格闘する前に、次のことを試します。
$( document ).ready(function() {
$('.buttonText').html('Seleccione ficheros');
});
bootstrap-filestyleは、コンポーネントをbutonTextという名前のクラスを持つスパンとしてレンダリングするため、ドキュメントのロード時にテキストを変更するだけです。簡単で、すべてのブラウザで機能する必要があります。
乾杯
私のプロジェクトでは次のようにしました:
.btn-outlined.btn-primary {
color: #000;
}
.btn-outlined.btn-primary:active, .btn-outlined.btn-positive:active, .btn-outlined.btn-negative:active {
color:#000;
}
.btn-block {
display: block;
width: 100%;
padding: 15px 0;
margin-bottom: 10px;
font-size: 18px;
font-family: Arial, Helvetica, sans-serif;
text-align: center;
}
<label for="fileUpload" class="btn btn-primary btn-block btn-outlined">Your text</label>
<input type="file" id="fileUpload"style="display: none;">
これは、役立つ可能性のある代替ソリューションです。これにより、ボタンの外に表示されるテキストが非表示になり、divの背景色と混合されます。次に、divに好きなタイトルを付けることができます。
<div style="padding:10px;font-weight:bolder; background-color:#446655;color: white;margin-top:10px;width:112px;overflow: hidden;">
UPLOAD IMAGE <input style="width:100px;color:#446655;display: inline;" type="file" />
</div>