Làm cách nào để xóa chú giải công cụ “Không có tệp nào được chọn” khỏi đầu vào tệp trong Chrome?


85

Tôi muốn xóa chú giải công cụ "Không có tệp nào được chọn" khỏi đầu vào tệp trong Google Chrome (Tôi thấy rằng không có chú giải công cụ nào được hiển thị trong Firefox).

Xin lưu ý rằng tôi không nói về văn bản bên trong trường nhập mà là về chú giải công cụ xuất hiện khi bạn di chuyển chuột qua đầu vào.

Tôi đã thử điều này mà không may mắn:

$('#myFileInput').attr('title', '');

1
Có thể thử thêm khoảng trắng trong giá trị thuộc tính: attr ('title', ''). Chú giải công cụ sẽ vẫn hiển thị nhưng với nội dung trống.
cryss 24/09/13

1
kiểm tra câu trả lời của tôi. sử dụng 'title': 'space'
simon

Có lẽ câu trả lời này có thể giúp bạn. stackoverflow.com/a/25825731/1323461
LCB

Câu trả lời:


61

Đây là một phần gốc của trình duyệt webkit và bạn không thể xóa nó. Bạn nên nghĩ đến một giải pháp hacky như che hoặc ẩn các đầu vào của tệp.

Một giải pháp hacky :

input[type='file'] {
  opacity:0    
}

<div>
    <input type='file'/>
    <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, ''))
})    

Vĩ cầm


Ồ, đó là tin xấu ... Có tài liệu nào có sẵn đề cập đến vấn đề này không (ý tôi là bạn không thể xóa chú giải công cụ đó)?
German Latorre

2
Chú giải công cụ vẫn được hiển thị khi bạn di chuột qua cạnh dưới cùng của đầu vào. "Opacity: 0" không giải quyết được vấn đề.
Webars

1
@Webars Tôi đã đề cập đến hacky, không chống đạn.
không xác định

7
@NisanthSojan Vì vậy, hãy làm cho nó tốt hơn, nó chỉ là một ví dụ.
không xác định

1
Một trong những vụ hack sạch nhất mà tôi từng thấy. Hy vọng rằng nó sẽ hoạt động trên tất cả các trình duyệt như IE9 +, FF, Safari. Chạy hoàn hảo trong Chrome.
Pawan Pillai

59

Chú giải công cụ mặc định có thể được chỉnh sửa bằng cách sử dụng thuộc tính title

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

Nhưng nếu bạn cố gắng xóa chú giải công cụ này

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

Điều này sẽ không hoạt động. Đây là mẹo nhỏ của tôi để giải quyết vấn đề này, hãy thử đặt tiêu đề với khoảng trắng. Nó sẽ hoạt động. :)

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

Hoạt động trong phiên bản Chromium 44.0.2403.89 và không có tác dụng phụ trong phiên bản 40.0.3! Đầu vào tuyệt vời @simon
Robert Siemer

nhưng tiêu đề tùy chỉnh của bạn sẽ hiển thị ngay cả sau khi chọn tệp.
Monicka

Tôi đã tích hợp giải pháp này với một engine ràng buộc (aureliajs, angle, ...) và điều này hoạt động rất tốt để tính toán thông báo thích hợp và hiển thị cho người dùng.
hiệnClever

58

Đối với tôi, tôi chỉ muốn văn bản được ẩn và vẫn sử dụng nút trình duyệt gốc.

input[type='file'] {
  color: transparent;
}

Tôi thích tất cả các đề xuất của undefined nhưng tôi có một trường hợp sử dụng khác, hy vọng điều này sẽ giúp ai đó trong tình huống tương tự.


2
Đã không lấy đi "không có tệp nào được chọn" cho tôi.
MEM

6
điều này sẽ loại bỏ "không có tệp nào được chọn" cho tôi
Brian

@MEM, bạn đang sử dụng trình duyệt nào? Điều này đang hoạt động đối với tôi trên Chrome (với một số sửa đổi vì tôi không chỉ muốn văn bản biến mất).
Brilliand

Đây là câu trả lời tốt nhất cho năm 2020. Đặt opacity thành 0 sẽ làm cho toàn bộ phần tử trở nên vô hình.
Xenalin

12

Tôi đã tìm thấy một giải pháp rất dễ dàng, chỉ cần đặt một chuỗi trống vào thuộc tính title.

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

2
Bạn chỉ nên đặt title = "" nếu không title = "" hiển thị chú giải công cụ trống.
ufukomer

9

Bạn có thể tắt chú giải công cụ đặt tiêu đề có khoảng trắng trên trình duyệt webkit như Chrome và chuỗi trống trên Firefox hoặc IE (được thử nghiệm trên Chrome 35, FF 29, IE 11, safari mobile)

$('input[type="file"]').attr('title', window.webkitURL ? ' ' : '');

Cảm ơn vì đã chỉnh sửa. Tôi muốn tìm một giải pháp mà không có wedkitURL vì nó không được dùng nữa.
jbier

Câu trả lời này là người duy nhất mà làm việc cho tôi, chỉ cần thay thế việc phát hiện trình duyệt đến một quy định trong stackoverflow.com/questions/9847580/...
yvesmancera

8

Rất dễ dàng, hãy quên CSS nhắm mục tiêu đầu vào ["type"] thứ, nó không hoạt động với tôi. Tôi không biết tại sao. Tôi đã có giải pháp trong thẻ HTML của mình

<input type="file" style="color:transparent; width:70px;"/>

Kết thúc vấn đề


5

Tất cả các câu trả lời ở đây là hoàn toàn phức tạp, hoặc nói cách khác là hoàn toàn sai.

html:

<div>
    <input type="file" />
    <button>Select File</button>
</div>

css:

input {
    display: none;
}

javascript:

$('button').on('click', function(){
   $('input').trigger('click'); 
});

http://jsfiddle.net/odfe34n8/

Tôi đã tạo ra trò chơi này, theo cách đơn giản nhất. Nhấp vào nút Chọn tệp sẽ xuất hiện menu chọn tệp. Sau đó, bạn có thể tạo kiểu cho nút theo bất kỳ cách nào bạn muốn. Về cơ bản, tất cả những gì bạn cần làm là ẩn đầu vào tệp và kích hoạt một lần nhấp tổng hợp vào nó khi bạn nhấp vào một nút khác. Tôi đã thử nghiệm điều này trên IE 9, FF và Chrome, và tất cả chúng đều hoạt động tốt.


5

Cái này phù hợp với tôi (ít nhất là trong Chrome và Firefox):

<input type="file" accept="image/*" title="&nbsp;"/>

Tuy nhiên, hộp của tiêu đề (chứa ký tự khoảng trắng không ngắt) vẫn xuất hiện.
2540625

Hộp tiêu đề xuất hiện với tôi với một chuỗi trống trên chrome.
AshD

4

Đây là một khó khăn. Tôi không thể tìm thấy cách chọn phần tử 'không có tệp nào được chọn' vì vậy tôi đã tạo một mặt nạ bằng cách sử dụng: sau bộ chọn giả.

Giải pháp của tôi cũng yêu cầu sử dụng bộ chọn giả sau để tạo kiểu cho nút:

::-webkit-file-upload-button

Hãy thử cái này: http://jsfiddle.net/J8Wfx/1/

FYI: Điều này sẽ chỉ hoạt động trong trình duyệt webkit.

Tái bút nếu có ai biết cách xem các bộ chọn giả webkit như cái ở trên trong trình kiểm tra webkit, vui lòng cho tôi biết


Không hoạt động đối với tôi trên chrome (bản thân fiddle hiển thị chú giải công cụ không có tệp nào được chọn)
AshD

4

Trên tất cả các trình duyệt và đơn giản. điều này đã làm nó cho tôi

$(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">


đây là một giải pháp tuyệt vời! nó hoạt động tuyệt vời đối với tôi vì sau khi tải tệp lên, tên tệp sẽ hiển thị. tốt đẹp và cảm ơn bạn!

Làm cách nào để loại bỏ chú giải công cụ này? Tôi vẫn thấy nó
The Fool

3

Bạn sẽ cần phải tùy chỉnh điều khiển khá nhiều để đạt được điều này.

Vui lòng làm theo hướng dẫn tại: http://www.quirksmode.org/dom/inputfile.html


1
Tôi sẽ đăng cái này, thêm vào đó có một plugin JQuery thực hiện một loại điều tương tự filamentgroup.com/lab/…
Dreen

1
@RyanMcDonough, tôi không thể thấy bất kỳ mẹo nào về việc ẩn chú giải công cụ trong liên kết mà bạn đã cung cấp, có điều gì tôi đang thiếu không?
German Latorre

Xin lỗi, tôi nên làm rõ. Vì không có cách nào để ẩn chú giải công cụ đó, bạn sẽ cần tùy chỉnh điều khiển biểu mẫu đầu vào để đạt được kết quả tương tự. Theo một nghĩa nào đó là hack quyền kiểm soát ban đầu.
Ryan McDonough,

@Dreen, tôi có thể nhìn thấy "Không có tập tin được lựa chọn" tooltip trong liên kết mà bạn cung cấp là tốt, nó không giải quyết được vấn đề ...
Đức Latorre

3

Quấn với và làm cho vô hình. Làm việc trong Chrome, Safari && FF.

label { 
  padding: 5px;
  background: silver;
}
label > input[type=file] {
    display: none;
}
<label>
  <input type="file">
  select file
</label>


2

Tốt hơn là tránh sử dụng javascript không cần thiết. Bạn có thể tận dụng lợi thế của thẻ nhãn để mở rộng mục tiêu nhấp chuột của đầu vào như sau:

<label>
  <input type="file" style="display: none;">
  <a>Open</a>
</label>

Mặc dù đầu vào bị ẩn, liên kết vẫn hoạt động như một mục tiêu nhấp chuột cho nó và bạn có thể tạo kiểu cho nó theo cách bạn muốn.


2

Ngay cả khi bạn đặt độ mờ bằng 0, chú giải công cụ sẽ xuất hiện. Thử visibility:hiddenphần tử. Đó là làm việc cho tôi.



1

Trực tiếp bạn không thể sửa đổi nhiều về đầu vào [type = file].

Đặt độ mờ tệp loại đầu vào: 0 và cố gắng đặt một phần tử tương đối [div / span / button] lên nó bằng CSS tùy chỉnh

Hãy thử http://jsfiddle.net/gajjuthechamp/pvyVZ/8/


1

Nó hoạt động cho tôi!

input[type="file"]{
  font-size: 0px;
}

Sau đó, bạn có thể sử dụng loại khác nhau của kiểu như width, heighthoặc các tài sản khác để tạo ra tập tin đầu vào của riêng bạn.


1

Thật ngạc nhiên khi không thấy ai được đề cập đến event.preventDefault()

$("input[type=file]").mouseover(function(event) {
    event.preventDefault();
    // This will disable the default behavior of browser
 });

0

bạn có thể đặt chiều rộng cho phần tử yor sẽ chỉ hiển thị nút và sẽ ẩn "không có tệp nào được chọn".


0

Tôi tìm kiếm câu trả lời tốt cho điều này ... và tôi tìm thấy điều này:

Đầu tiên hãy xóa 'không có tệp nào được chọn'

input[type="file"]{
font-size: 0px;
}

sau đó làm việc với nút -webkit-file-upload-buttontheo cách này:

input[type="file"]::-webkit-file-input-button{
font-size: 16px; /*normal size*/
}

hy vọng đây là những gì bạn đang tìm kiếm, nó phù hợp với tôi.


0

Kết hợp một số đề xuất ở trên, sử dụng jQuery, đây là những gì tôi đã làm:

input[type='file'].unused {
  color: transparent;
}

Và:

$(function() {
  $("input[type='file'].unused").click( function() {$(this).removeClass('unused')});
};

Và đặt lớp "không sử dụng" trên đầu vào tệp của bạn. Điều này là đơn giản và hoạt động khá tốt.


0

Đối với tôi, giải pháp tốt nhất là bọc input [type = "file"] trong một trình bao bọc và thêm một số mã jquery:

$(function(){
	function readURL(input){
        if (input.files && input.files[0]){
            var reader = new FileReader();
            
            reader.onload = function (e){
                $('#uploadImage').attr('src', e.target.result);
            }
            reader.readAsDataURL(input.files[0]);
        }
    }
    $("#image").change(function(){
        readURL(this);
    });
});
#image{
	position: absolute;
	top: 0;
	left: 0;
	opacity: 0;
	width: 75px;
	height: 35px;
}
#uploadImage{
	position: relative;
	top: 30px;
	left: 70px;
}
.button{
	position: relative;
	width: 75px;
	height: 35px;
	border: 1px solid #000;
	border-radius: 5px;
	font-size: 1.5em;
	text-align: center;
	line-height: 34px;
}
<form action="#" method="post" id="form" >
	<div class="button">
		Upload<input type="file" id="image" />
     </div>
     <img id="uploadImage" src="#" alt="your image" width="350" height="300" />
 </form>


0

Tôi đã nghĩ ra một giải pháp hack hoàn toàn loại bỏ "Không có tệp nào được chọn" cùng với không gian bổ sung được thêm vào sau văn bản đó (trong Chrome, tôi nhận được thông báo như: "Không có tệp nào được chọn").

Điều này hoàn toàn làm xáo trộn việc căn chỉnh trang của tôi, vì vậy tôi thực sự đã đấu tranh với nó để tìm ra giải pháp. Bên trong thuộc tính style của thẻ đầu vào, việc đặt "width" thành chiều rộng của nút sẽ loại bỏ khoảng trắng và văn bản ở cuối. Vì chiều rộng của nút không giống nhau trong tất cả các trình duyệt (ví dụ: nó nhỏ hơn một chút trong Firefox), bạn cũng sẽ muốn đặt màu của kiểu thành màu giống với màu nền của trang (nếu không sẽ là " Không "có thể hiển thị qua). Thẻ tệp đầu vào của tôi trông giống như sau:

<input style="float:left; **width:88px;** **color:#000000;**" type="file" id="fileInput" onclick="fileOpen()">    

Tôi đã không nhìn thấy giải pháp bên dưới cho đến bây giờ, vì nó đã ở trên trang. Trong mọi trường hợp, tôi sẽ không xóa giải pháp của mình, vì hy vọng thông tin về màu kiểu sẽ hữu ích (nó đã giải quyết được sự cố Firefox cho tôi).
TonyLuigiC

0

Tôi biết đó là một chút hack, nhưng tất cả những gì tôi yêu cầu là đặt màu thành trong suốt trong bảng định kiểu - nội tuyến sẽ trông giống như sau style = "color: transparent;".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.