Как удалить всплывающую подсказку «Файл не выбран» из ввода файла в Chrome?


86

Я хочу удалить всплывающую подсказку «Файл не выбран» из ввода файла в Google Chrome (я вижу, что всплывающая подсказка не отображается в Firefox).

Обратите внимание, что я говорю не о тексте внутри поля ввода, а о всплывающей подсказке, которая появляется при наведении курсора мыши на поле ввода.

Я пробовал это без везения:

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

1
Может быть, попробуйте добавить пробел в значение атрибута: attr ('title', ''). Всплывающая подсказка по-прежнему будет видна, но с пустым содержимым.
cryss

1
проверьте мой ответ. используйте 'title': 'space'
Саймон

Возможно, этот ответ может вам помочь. stackoverflow.com/a/25825731/1323461
LCB

Ответы:


61

Это встроенная часть браузеров webkit, и вы не можете ее удалить. Вы должны думать о Hacky решение , как покрытие или скрывая входы файлов.

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, ''))
})    

Скрипка


Вау, это плохие новости ... Имеется ли какая-либо документация, в которой упоминается эта проблема (я имею в виду, факт, что вы не можете удалить эту подсказку)?
German Latorre

2
Всплывающая подсказка по-прежнему отображается при наведении курсора на нижний край поля ввода. «Непрозрачность: 0» не решает проблему.
Webars

1
@Webars Я упомянул хакерский, а не пуленепробиваемый.
undefined

7
@NisanthSojan Так что сделай это лучше, это был просто пример.
undefined

1
Один из самых чистых хаков, которые я когда-либо видел. Надеюсь, он будет работать во всех браузерах, таких как IE9 +, FF, Safari. Отлично работает в Chrome.
Паван Пиллай,

60

Всплывающую подсказку по умолчанию можно редактировать с помощью атрибута title

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

Но если вы попытаетесь удалить эту подсказку

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

Это не сработает. Вот мой маленький трюк, чтобы поработать с этим, попробуйте заголовок с пробелом. Это сработает.:)

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

Работает в Chromium версии 44.0.2403.89 и не имеет побочных эффектов в версии 40.0.3! Отличный вклад @simon
Роберт Симер

но ваш собственный заголовок будет отображаться даже после выбора файлов.
Monicka

Я интегрировал это решение с механизмом привязки (aureliajs, angular, ...), и это очень хорошо работает, чтобы вычислить правильное сообщение и показать пользователю.
ConductedClever

57

Для меня я просто хотел, чтобы текст был невидимым и по-прежнему использовал кнопку встроенного браузера.

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

Мне нравятся все предложения undefined, но у меня был другой вариант использования, надеюсь, это поможет кому-то в той же ситуации.


2
Не убрали для меня "файл не выбран".
MEM

6
для меня это избавляет от «не выбран файл»
Брайан

@MEM, в каком вы браузере? Это работает для меня в Chrome (с некоторыми изменениями, потому что я не хочу, чтобы текст просто исчезал).
Brilliand

Это лучший ответ на 2020 год. Установка непрозрачности на 0 делает невидимым весь элемент.
Xenalin

12

Я нашел решение, которое очень простое, просто введите пустую строку в атрибут title.

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

2
Вы должны просто сделать title = "" иначе title = "" покажет пустую подсказку.
ufukomer 03

9

Вы можете отключить всплывающую подсказку, задав заголовок с пробелом в браузерах webkit, таких как Chrome, и пустой строкой в ​​Firefox или IE (проверено в Chrome 35, FF 29, IE 11, safari mobile)

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

Спасибо за редактирование. Я хотел бы найти решение без wedkitURL, потому что он устарел.
jbier

Этот ответ единственный, который сработал для меня, просто заменил обнаружение браузера на тот, который предоставлен в stackoverflow.com/questions/9847580/…
yvesmancera

9

Очень просто, забудьте, что CSS нацелен на input ["type"], это не работает для меня. Не знаю почему. Я нашел свое решение в своем HTML-теге

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

Конец проблемы


5

Все ответы здесь либо слишком усложнены, либо совершенно неверны.

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/

Я создал эту скрипку самым простым способом. При нажатии на кнопку «Выбрать файл» открывается меню выбора файла. Затем вы можете стилизовать кнопку так, как хотите. По сути, все, что вам нужно сделать, это скрыть ввод файла и вызвать синтетический щелчок по нему, когда вы нажмете другую кнопку. Я проверил это на IE 9, FF и Chrome, и все они работают нормально.


5

Это работает для меня (по крайней мере, в Chrome и Firefox):

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

Однако поле заголовка (содержащее неразрывный пробел) по-прежнему отображается.
2540625

Поле заголовка отображается для меня с пустой строкой на хроме.
AshD

4

Это непростой вопрос. Мне не удалось найти способ выбрать элемент «файл не выбран», поэтому я создал маску, используя псевдоселектор: after.

Мое решение также требует использования следующего псевдоселектора для стилизации кнопки:

::-webkit-file-upload-button

Попробуйте это: http://jsfiddle.net/J8Wfx/1/

К вашему сведению: это будет работать только в браузерах webkit.

PS, если кто-нибудь знает, как просматривать псевдоселекторы webkit, подобные приведенному выше, в инспекторе webkit, дайте мне знать


Не сработало у меня на Chrome (сама скрипка показывает всплывающую подсказку без выбранного файла)
AshD

4

Во всех браузерах и просто. это сделало это для меня

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


это отличное решение! это отлично сработало для меня, потому что после загрузки файла имя файла будет отображаться. приятно и спасибо!

как это удалить всплывающую подсказку? Я до сих пор это вижу
Дурак

3

Для этого вам нужно будет довольно много настроить элемент управления.

Следуйте инструкциям на странице http://www.quirksmode.org/dom/inputfile.html.


1
Я собирался опубликовать это, плюс есть плагин JQuery, который делает что-то похожее filamentgroup.com/lab/…
Дрин

1
@RyanMcDonough, я не вижу советов по скрытию всплывающей подсказки в предоставленной вами ссылке, что-то мне не хватает?
German Latorre

Извините, я должен пояснить. Поскольку нет способа скрыть эту подсказку, вам нужно будет настроить элемент управления формой ввода для достижения аналогичного результата. В некотором смысле взлом исходного элемента управления.
Райан МакДонаф,

@Dreen, я также вижу всплывающую подсказку «Файл не выбран» в предоставленной вами ссылке, это не решает проблему ...
German Latorre

3

Оберните и сделайте невидимкой. Работайте в Chrome, Safari && FF.

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


2

Лучше избегать использования ненужного javascript. Вы можете воспользоваться тегом label, чтобы развернуть целевой объект ввода, например:

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

Несмотря на то, что ввод скрыт, ссылка по-прежнему работает для нее как цель щелчка, и вы можете стилизовать ее, как хотите.


2

Даже если вы установили непрозрачность на ноль, всплывающая подсказка появится. Примерьте visibility:hiddenстихию. У меня это работает.


2

Меня устраивает!

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

Затем вы можете использовать разные стили, такие как width, heightили другие свойства, чтобы создать свой собственный входной файл.



1

Непосредственно вы не можете сильно изменить input [type = file].

Сделайте непрозрачность файла входного типа: 0 и попробуйте разместить над ним относительный элемент [div / span / button] с помощью настраиваемого CSS.

Попробуйте это http://jsfiddle.net/gajjuthechamp/pvyVZ/8/


1

Удивительно, что никто не упомянул о event.preventDefault()

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

0

вы можете установить ширину для элемента yor, при котором будет отображаться только кнопка и скрываться «файл не выбран».


0

Я ищу на это хороший ответ ... и нашел вот что:

Сначала удалите "файл не выбран"

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

затем работайте с кнопкой -webkit-file-upload-buttonследующим образом:

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

надеюсь, это то, что вы искали, это работает для меня.


0

Объединив некоторые из приведенных выше предложений, используя jQuery, я сделал следующее:

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

И:

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

И поместите класс «неиспользуемый» на входные данные файла. Это просто и работает очень хорошо.


0

Лучшее решение для меня - обернуть input [type = "file"] в оболочку и добавить код 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

Я придумал хакерское решение, которое полностью удаляет «Файл не выбран» плюс дополнительное пространство, добавляемое после этого текста (в Chrome я получаю что-то вроде: «Файл не выбран»).

Это полностью нарушало выравнивание моей страницы, поэтому я действительно боролся с этим, чтобы найти решение. Внутри атрибута стиля входного тега установка «width» равной ширине кнопки устранит завершающий текст и пробелы. Поскольку ширина кнопки не одинакова во всех браузерах (например, в Firefox она немного меньше), вы также захотите установить цвет стиля на тот же цвет, что и фон страницы (в противном случае случайный " Нет "может просвечивать"). Мой тег входного файла выглядит так:

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

Я не видел нижеприведенного решения до сих пор, так как оно было так далеко на странице. В любом случае я не собираюсь удалять свое решение, так как, надеюсь, информация о цвете стиля будет полезна (это решило проблему Firefox для меня).
TonyLuigiC

0

Я знаю, что это своего рода хакерство, но все, что мне требовалось, - это установить прозрачный цвет в таблице стилей - встроенный будет выглядеть так: style = "color: transparent;".

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.