"선택된 파일 없음"을 변경합니다.


90

다음과 같이 "파일 선택"버튼이 있습니다 (Jade를 사용하고 있지만 Html5와 동일해야합니다).

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

브라우저에서 "선택한 파일 없음"옆에 텍스트가있는 버튼이 표시됩니다. "선택한 파일 없음"텍스트를 "선택한 동영상 없음"또는 "동영상을 선택하십시오"와 같은 다른 것으로 변경하고 싶습니다. 여기에서 첫 번째 제안을 따랐습니다.

파일 입력 필드에 '선택된 파일 없음'을보고 싶지 않습니다.

그러나 이렇게해도 텍스트는 변경되지 않았습니다.

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

아무도 문제가 어디에 있는지 알아낼 수 있습니까?


여기에 대한 답변을 찾을 수 stackoverflow.com/questions/12035400/...
마흐무드 Farahat

1
나는 그것을 제거하지 않는 @MahmoudFarahat, 나는 텍스트를 변경하려면
FranXh

텍스트를 제거하고 그 옆에 자리 표시 자 레이블을 붙일 수 없습니까?
Roger Lipscombe

다른 게시물에 이것에 대한 정말 깔끔한 답변이 있습니다. stackoverflow.com/a/21842275/3653494
P-Bagels

그것은 매우 가능합니다 :이 빠른 솔루션을 확인하십시오-다른 것들을 포함하고 CSS의 맨 아래로 스크롤하십시오 : w3schools.com/code/tryit.asp?filename=FWBJX00JSQD7
darga33

답변:


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 inputJavaScript에서 숨기고 클릭 할 수 없습니다 . 감사!
huysentruitw

1
이것은 훌륭합니다. Hackity 우아함. 그것을 사랑하십시오.
Ben

3
훌륭한 솔루션입니다. 이것이 허용되는 대답이어야합니다.
Multitut 2014 년

1
훌륭한 솔루션, 필드를 쉽게 사용자 정의 할 수있는 방법도 있습니다
SAFAD

8
흥미로운 html 솔루션이지만 사용성에는 좋지 않습니다. 사용자는 파일을 선택한 후에도 항상 "파일 선택"또는 이와 동등한 것을 볼 수 있습니다.
Cthulhu 2014

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이 아닌 visible : hidden을 사용하여 파일 요소를 보이지 않게 만듭니다.

코딩 즐기기


2
어떻게 작동하는지 설명하여이 답변을 더 잘 만들 수 있습니다.
user8397947

이 작업을 수행하면 파일 드래그가 작동하지 않는 것 같습니다.
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];
    }
};

13

맞습니다. 사전 업로드 파일 목록이 있어도 '선택한 파일 없음'을 제거 할 방법이 없습니다.

내가 찾은 (그리고 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">


이것은 매우 효과적으로 작동하며 파일 입력 근처의 텍스트를 숨길 것입니다.
항상-A-학습자

6

하지만이 툴팁을 제거하려고하면

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

이것은 작동하지 않습니다. 이 작업을 수행하는 작은 트릭은 다음과 같습니다. 공백으로 제목을 시도하십시오. 작동합니다. :)

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

크롬과 모든 브라우저에서 테스트했습니다. 잘 작동합니다. 그것을 테스트하고 확인할 수 있습니까?
사이먼

4
Chrome, Safari, Firefox에서 다시 테스트되었습니다. 작동하지 않습니다.
AdamInTheOculus

크롬 버전 56.0.2924.87에서 완벽하게 작동하는지 확인합니다. 어떤 버전은 당신이 사용하는 @PantsMagee?
사이먼

title내가보기 에 속성에서 설정 한 텍스트로 툴팁을 추가합니다
Fyodor

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>


"회사 로고 선택"이라는 텍스트가 오른쪽이 아닌 단추 아래에 표시되도록하려면 어떻게해야합니까?
alex

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"] {색상 : 투명; 배경색 : # F89406; 테두리 : 2px 단색 # 34495e; 너비 : 100 %; 높이 : 36px; 테두리 반경 : 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

이것은 나를 위해 잘 작동했습니다. 버튼은 사라졌지 만 라벨을 클릭하면 파일 열기 대화 상자가 열리고 버튼처럼 보이도록 라벨을 지정할 수 있습니다. 성가신 "선택된 파일 없음"텍스트를 제거했습니다.
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.