「ファイルが選択されていません」を変更します。


90

次のように「ファイルを選択」ボタンがあります(Jadeを使用していますが、Html5と同じである必要があります)。

 input(type='file', name='videoFile')

ブラウザでは、「ファイルが選択されていません」というテキストが横に付いたボタンが表示されます。「ファイルが選択されていません」というテキストを「ビデオが選択されていません」や「ビデオを選択してください」などの別のテキストに変更したいと思います。私はここで最初の提案に従いました:

ファイル入力フィールドに「ファイルが選択されていません」と表示したくない

しかし、これを行ってもテキストは変わりませんでした。

 input(type='file', name='videoFile', title = "Choose a video please")

誰かが私が問題がどこにあるのかを理解するのを手伝ってくれる?



1
@MahmoudFarahat削除したくない、テキストを変更したい
FranXh 2013

テキストを削除して、その横にプレースホルダーラベルを付けることはできませんか?
Roger Lipscombe 2013

別の投稿でこれに対する本当にきちんとした答えがあります。stackoverflow.com/a/21842275/3653494
P-Bagels 2016

それは非常に可能です:このクイックソリューションをチェックしてください-他のものが含まれています、CSSの一番下までスクロールしてください:w3schools.com/code/tryit.asp
filename =

回答:


17

ボタンのデフォルトのラベルを変更することはできないと確信しています。ボタンはブラウザにハードコードされています(各ブラウザはボタンのキャプションを独自の方法でレンダリングします)。このボタンスタイリングの記事をチェックしてください


6
ボタンのラベルではなく、その横にある「ファイルが選択されていません」です。ファイルを選択すると、[ファイルが選択されていません]からfileName.somethingに変わります。だから私はそれが変更可能であるべきだと信じています。
franXh 2013

@JeremyThilleなぜなら人は人だからです。
AMN

216

cssで入力を非表示にし、ラベルを追加して入力ボタンに割り当てます。ラベルはクリック可能で、クリックするとファイルダイアログが表示されます。

<input type="file" id="files" class="hidden"/>
<label for="files">Select file</label>

次に、必要に応じてラベルをボタンとしてスタイル設定します。


1
これはIE9でも機能しfile input、JavaScriptからを非表示にしてクリックすることはできません。ありがとう!
huysentruitw 2013

1
これは素晴らしい。ハッキーエレガンス。大好きです。
ベン

3
素晴らしい解決策、これは受け入れられた答えでなければなりません。
Multitut 2014年

1
優れたソリューションであり、フィールドをカスタマイズする簡単な方法も可能です
SAFAD 2014年

8
興味深いhtmlソリューションですが、使い勝手は良くありません。ファイルを選択した後でも、ユーザーには常に「ファイルの選択」または同等のものが表示されます。
クトゥルフ

26

これを試してみてください

<input type="file" name="uploadfile" id="img" style="display:none;"/>
<label for="img">Click me to upload image</label>

使い方

とても簡単です。Label要素は、「for」タグを使用して、IDでフォームの要素を参照します。この場合、それらの間の参照キーとして「img」を使用しました。完了すると、ラベルをクリックするたびに、フォームの要素クリックイベント(この場合はファイル要素クリックイベント)が自動的にトリガーされます。次に、display:noneとvisibility:hiddenを使用してファイル要素を非表示にして、空のスペースが作成されないようにします。

コーディングをお楽しみください


2
あなたはそれがどのように機能するかを説明することによってこの答えをより良くすることができます。
user8397947 2016

これを行うと、ファイルのドラッグが機能しないようです。
fonZ

16

http://jsfiddle.net/ZDgRG/

上記のリンクを参照してください。cssを使用してデフォルトのテキストを非表示にし、ラベルを使用して必要なものを表示します。

<div><input type='file' title="Choose a video please" id="aa" onchange="pressed()"><label id="fileLabel">Choose file</label></div>

input[type=file]{
    width:90px;
    color:transparent;
}

window.pressed = function(){
    var a = document.getElementById('aa');
    if(a.value == "")
    {
        fileLabel.innerHTML = "Choose file";
    }
    else
    {
        var theSplit = a.value.split('\\');
        fileLabel.innerHTML = theSplit[theSplit.length-1];
    }
};

12

そうです、アップロード前のファイルのリストがある場合でも、この「ファイルが選択されていません」を削除する方法はありません。

私が見つけた(そしてIE、FF、CRで動作する)最も簡単な解決策は次のとおりです

  1. 入力を非表示にして、「ファイル」ボタンを追加します
  2. 次に、「ファイル」ボタンを呼び出して、ファイルアップロードをバインドするように依頼します(この例ではJQueryを使用しています)

$('.addfiles').on('click', function() { $('#fileupload').click();return false;});
<button class="addfiles">Add Files</button>
<input id="fileupload" type="file" name="files[]" multiple style='display: none;'>

それは完了し、完全に機能します:)

フレッド


7

$(function () {
     $('input[type="file"]').change(function () {
          if ($(this).val() != "") {
                 $(this).css('color', '#333');
          }else{
                 $(this).css('color', 'transparent');
          }
     });
})
input[type="file"]{
    color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="file" name="app_cvupload" class="fullwidth input rqd">


これは非常に効果的に機能しており、ファイル入力の近くのテキストを非表示にします。
常に学習者

6

ただし、このツールチップを削除しようとすると

<input type='file' title=""/>

これは機能しません。これを機能させるための私のちょっとしたコツです。スペースを入れてタイトルを試してください。それが動作します。:)

<input type='file' title=" "/>

Chromeとすべてのブラウザでテストしました。正常に動作しています。テストして確認してください。
simon 2016年

4
Chrome、Safari、Firefoxで再度テストしました。それは動作しません。
AdamInTheOculus 2017

Chromeバージョン56.0.2924.87をチェックインすると、完全に正常に機能しています。どのバージョンを使用していますか?@ PantsMagee–
simon

それはちょうどあなたがに設定されたテキストとツールチップを追加しtitle、私が見るように、属性
フョードル

3

このようなものがうまくいく可能性があります

input(type='file', name='videoFile', value = "Choose a video please")

3

HTML

  <div class="fileUpload btn btn-primary">
    <label class="upload">
      <input name='Image' type="file"/>
    Upload Image
    </label>
  </div>

CSS

input[type="file"]
{
  display: none;
}
.fileUpload input.upload 
{
    display: inline-block;
}

注: Btn btn-primaryは、ブートストラップボタンのクラスです。ただし、ボタンの位置がおかしくなっているように見える場合があります。インラインCSSで修正できることを願っています。


3
 .vendor_logo_hide{
      display: inline !important;;
      color: transparent;
      width: 99px;
    }
    .vendor_logo{
      display: block !important;
      color: black;
      width: 100%; 
    }

$(document).ready(function() {
  // set text to select company logo 
  $("#Uploadfile").after("<span class='file_placeholder'>Select Company Logo</span>");
  // on change
  $('#Uploadfile').change(function() {
    //  show file name 
    if ($("#Uploadfile").val().length > 0) {
      $(".file_placeholder").empty();
      $('#Uploadfile').removeClass('vendor_logo_hide').addClass('vendor_logo');
      console.log($("#Uploadfile").val());
    } else {
      // show select company logo
      $('#Uploadfile').removeClass('vendor_logo').addClass('vendor_logo_hide');
      $("#Uploadfile").after("<span class='file_placeholder'>Select  Company Logo</span>");
    }

  });

});
.vendor_logo_hide {
  display: inline !important;
  ;
  color: transparent;
  width: 99px;
}

.vendor_logo {
  display: block !important;
  color: black;
  width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<input type="file" class="vendor_logo_hide" name="v_logo" id='Uploadfile'>
<span class="fa fa-picture-o form-control-feedback"></span>

<div>
  <p>Here defualt no choose file is set to select company logo. if File is selected then it will displays file name</p>
</div>


「会社のロゴを選択」というテキストを右側ではなくボタンの下に表示するにはどうすればよいですか?
アレックス2017

3

ラベルテキストが変更されたラベルの使用

<input type="file" id="files" name="files" class="hidden"/>
<label for="files" id="lable_file">Select file</label>

jqueryを追加

<script>
     $("#files").change(function(){
        $("#lable_file").html($(this).val().split("\\").splice(-1,1)[0] || "Select file");     
     });
</script>

2

入力の幅を変更するだけです。約90px

<input type="file" style="width: 90px" />


1
シンプルで問題なく動作します。ちょうど幅は100pxです。:)
Sachin Shah

1
<div class="field">
    <label class="field-label" for="photo">Your photo</label>
    <input class="field-input" type="file" name="photo"  id="photo" value="photo" />
</div>

とcss

input[type="file"]
{ 
   color: transparent; 
   background-color: #F89406; 
   border: 2px solid #34495e; 
   width: 100%; 
   height: 36px; 
   border-radius: 3px; 
}

1
input [type = "file"] {color:transparent; 背景色:#F89406; ボーダー:2pxソリッド#34495e; 幅:100%; 高さ:36px; border-radius:3px; }
Ir Calif

1

あなたはそれをこのように試すことができます:

<div>
    <label for="user_audio" class="customform-control">Browse Computer</label>
    <input type='file' placeholder="Browse computer" id="user_audio"> <span id='val'></span>
 <span id='button'>Select File</span>
</div>

選択したファイルを表示するには:

$('#button').click(function () {
    $("input[type='file']").trigger('click');
})

$("input[type='file']").change(function () {
    $('#val').text(this.value.replace(/C:\\fakepath\\/i, ''))
    $('.customform-control').hide();
})

選択したファイル名を取得してくれた@ unlucky13に感謝します

これがフィドルです:

http://jsfiddle.net/eamrmoc7/


0

これは、「ファイルなしでプロフィール写真を選択する」の名前を変更するのに役立ちます

<input type='file'id="files" class="hidden"/>  
<label for="files">Select profile picture</label>

ボタンがなくなりました。
Diansheng 2017

これは私にとってはうまくいきました。ボタンはなくなりましたが、[ファイルを開く]ダイアログをクリックすると、ボタンのように見えるようにラベルを付けることができます。煩わしい「ファイルが選択されていません」というテキストが削除されました。
NoBullMan 2017

0

私は「ラベル」の代わりに「ボタン」を使用します、これが誰かを助けることを願っています。

これはボタンを表示するだけで、ユーザーがクリックするとファイルチューザーがポップアップし、ファイルを選択すると自動的にアップロードされます。

<button onclick='<%= "$(\"#" + FileUpload1.ClientID + "\").click(); return false;" %>'>The Text You Want</button>

<asp:FileUpload onchange="$('#btnUpload').click();" ID="FileUpload1" runat="server" style="display: none;" />

<asp:Button ID="btnUpload" ClientIDMode="Static" runat="server" OnClick="btnUpload_Click" style="display: none;" />

0

次のcssコードを使用して非表示にできます(ファイルは選択されていません)

HTML

<input type="file" name="page_logo" id="page_logo">

CSS

input[type="file"]:after {color: #fff}

色が背景色と一致していることを確認します


-1

次の場所に良い例(ファイルタイプの検証を含む)があります。

https://github.com/mdn/learning-area/blob/master/html/forms/file-examples/file-example.html

これは基本的に、ボタンを使用するというAmosの具体化されたバージョンです。

私は上記の提案のいくつかを試しましたが成功しませんでした(しかし多分それは私です)。

私はそれを使用してExcelファイル変換を行うためにそれを転用しています

  <form>
    <div>
      <label for="excel_converts">Choose a spreadsheet to convert.</label>
      <input type="file" id="excel_converts" name="excel_converts" accept=".xlsx, .xls, .csv" >
    </div>
    <div class="preview">
      <p>No spreadsheet currently selected for conversion</p>
    </div>
    <div>
      <button>Submit</button>
    </div>
  </form>

それで、これはなぜ反対票を投じられたのですか?おそらく、まったく関係のない投稿で、ひざまずく反対票を投じるのは簡単であるが、建設的であるのははるかに簡単ではないと提案したからですか?
DLyons
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.