Як я можу видалити підказку "Не вибрано файл" із файлу, який вводиться в Chrome?


85

Я хотів би видалити підказку "Не вибрано файл" із введеного файлу в Google Chrome (я бачу, що у Firefox не відображається підказка).

Зверніть увагу, що я говорю не про текст усередині поля введення, а про підказку, яка з’являється, коли ви наводите курсор миші на введення.

Я пробував це без удачі:

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

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

1
перевір мою відповідь. використовувати 'title': 'space'
simon

Можливо, ця відповідь може вам допомогти. stackoverflow.com/a/25825731/1323461
LCB

Відповіді:


61

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

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

Скрипка


Ого, це погані новини ... Чи є якась документація, яка згадує цю проблему (я маю на увазі той факт, що ви не можете видалити цю підказку)?
німецький Latorre

2
Підказка все ще відображається під час наведення курсора на нижній край вводу. "Непрозорість: 0" не вирішує проблему.
Webars

1
@ Веб-сайти, про які я згадував хакі, не захищені від куль.
undefined

7
@NisanthSojan Тож зробіть це краще, це був лише приклад.
undefined

1
Один з найчистіших хаків, який я бачив. Сподіваємось, це буде працювати у всіх браузерах, таких як IE9 +, FF, Safari. Чудово працює в Chrome.
Pawan Pillai

59

Підказку за замовчуванням можна відредагувати, використовуючи атрибут title

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

Але якщо ви спробуєте видалити цю підказку

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

Це не спрацює. Ось мій маленький фокус, щоб це зробити, спробуйте заголовок з пробілом. Це спрацює. :)

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

Працює у Chromium версії 44.0.2403.89 і не має побічних ефектів у версії 40.0.3! Чудовий вхід @simon
Robert Siemer

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

Я інтегрував це рішення із механізмом прив'язки (aureliajs, angular, ...), і це дуже добре працює для обчислення належного повідомлення та показу користувача.
ConductedClever

58

Для мене я просто хотів, щоб текст був невидимим і все ще використовував рідну кнопку браузера.

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

Мені подобаються всі невизначені пропозиції, але у мене був інший варіант використання, сподіваюся, це допомагає комусь у тій самій ситуації.


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

6
це позбавляє мене від "файлу не вибрано"
Брайан

@MEM, у якому браузері ти? Це працює для мене в Chrome (з деякими змінами, оскільки я не просто хочу, щоб текст зник).
Brilliand

Це найкраща відповідь на 2020 рік. Установка непрозорості на 0 робить весь елемент невидимим.
Ксеналін

12

Я знайшов дуже просте рішення, просто встановив порожній рядок в атрибуті title.

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

2
Вам слід просто зробити title = "" інакше title = "" відображає пусту підказку.
ufukomer

9

Ви можете вимкнути підказку, встановивши заголовок, із пробілом у веб-браузерах, таких як 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

8

Дуже просто, забудьте CSS, націлений на введення ["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

У вікні заголовка для мене з’являється порожній рядок на chrome.
AshD

4

Це складно. Я не міг знайти спосіб вибрати елемент "не вибрано файл", тому створив маску за допомогою псевдоселектора: after.

Моє рішення також вимагає використання наступного псевдоселектора для стилізації кнопки:

::-webkit-file-upload-button

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

FYI: Це буде працювати лише у браузерах 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, я не бачу жодних порад щодо приховування підказки у наданому вами посиланні, чи щось мені не вистачає?
німецький Latorre

Прошу вибачення, я повинен пояснити. Оскільки немає можливості приховати цю підказку, вам доведеться налаштувати елемент керування формою введення, щоб досягти подібного результату. У певному сенсі злом оригінального контролю.
Райан Макдону

@Dreen, я також бачу підказку "Не вибрано файл" у наданому вами посиланні, це не вирішує проблему ...
Німецький 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>
  <input type="file" style="display: none;">
  <a>Open</a>
</label>

Незважаючи на те, що введення приховано, посилання все одно працює як ціль для нього, і ви можете стилізувати його як завгодно.


2

Навіть якщо ви встановите нульову непрозорість, з’явиться підказка. Приміряйте visibility:hiddenстихію. Це працює для мене.



1

Безпосередньо ви не можете багато чого змінити щодо вводу [type = file].

Зробіть непрозорість файлу вхідного типу: 0 і спробуйте розмістити над ним відносний елемент [div / span / button] за допомогою користувацького CSS

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


1

Це працює для мене!

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

Потім ви можете використовувати різні типи стилів, такі як width, heightабо інші властивості, щоб створити власний вхідний файл.


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

Для мене найкращим рішенням є обгортання вводу [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 я отримую щось на зразок: "Не вибраний файл").

Це повністю зіпсувало моє вирівнювання сторінки, тому я справді боровся з ним, щоб знайти рішення. Всередині атрибута стилю вхідного тегу, встановивши "ширину" на ширину кнопки, ви усунете кінцевий текст та пробіли. Оскільки ширина кнопки не однакова у всіх браузерах (наприклад, вона трохи менша у 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.