Wie kann ich den Tooltip "Keine Datei ausgewählt" aus einer Dateieingabe in Chrome entfernen?

82

Ich möchte den Tooltip "Keine Datei ausgewählt" aus einer Dateieingabe in Google Chrome entfernen (ich sehe, dass in Firefox kein Tooltip angezeigt wird).

Bitte beachten Sie, dass ich nicht über den Text im Eingabefeld spreche, sondern über den Tooltip, der angezeigt wird, wenn Sie die Maus über die Eingabe bewegen.

Ich habe das ohne Glück versucht:

$('#myFileInput').attr('title', '');
Deutscher Latorre
quelle
1
Versuchen Sie möglicherweise, dem Attributwert Leerzeichen hinzuzufügen: attr ('title', ''). Der Tooltip ist weiterhin sichtbar, jedoch mit leerem Inhalt.
Cryss
1
Überprüfen Sie meine Antwort. benutze 'title': 'space'
simon
Vielleicht kann Ihnen diese Antwort helfen. stackoverflow.com/a/25825731/1323461
LCB

Antworten:

60

Dies ist ein nativer Teil der Webkit- Browser und kann nicht entfernt werden. Sie sollten über eine hackige Lösung nachdenken, wie das Abdecken oder Ausblenden der Dateieingaben.

Eine hackige Lösung:

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

Geige

nicht definiert
quelle
Wow, das sind schlechte Nachrichten ... Gibt es eine Dokumentation, die dieses Problem erwähnt (ich meine, die Tatsache, dass Sie diesen Tooltip nicht entfernen können)?
Deutscher Latorre
2
Der Tooltip wird weiterhin angezeigt, wenn Sie den Mauszeiger über den unteren Rand der Eingabe bewegen. "Deckkraft: 0" löst das Problem nicht.
Webars
1
@Webars Ich habe Hacky erwähnt, nicht kugelsicher.
undefiniert
7
@NisanthSojan Also mach es besser, es war nur ein Beispiel.
undefiniert
1
Einer der saubersten Hacks, die ich je gesehen habe. Hoffentlich funktioniert es in allen Browsern wie IE9 +, FF, Safari. Läuft perfekt in Chrome.
Pawan Pillai
59

Der Standard-Tooltip kann mithilfe des title-Attributs bearbeitet werden

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

Aber wenn Sie versuchen, diesen Tooltip zu entfernen

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

Das wird nicht funktionieren. Hier ist mein kleiner Trick, um dies zu tun. Versuchen Sie es mit einem Leerzeichen. Es wird klappen.:)

<input type='file' title=" "/>
Simon
quelle
Funktioniert in Chromium Version 44.0.2403.89 und hat in Version 40.0.3 keine Nebenwirkungen! Toller Input @simon
Robert Siemer
Ihr benutzerdefinierter Titel wird jedoch auch nach Auswahl der Dateien angezeigt.
Monicka
Ich habe diese Lösung in eine Bindungs-Engine (aureliajs, angle, ...) integriert und dies funktioniert sehr gut, um die richtige Nachricht zu berechnen und dem Benutzer anzuzeigen.
ConductedClever
56

Für mich wollte ich nur, dass der Text unsichtbar ist und trotzdem die native Browser-Schaltfläche verwendet.

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

Ich mag alle Vorschläge von undefined, aber ich hatte einen anderen Anwendungsfall. Ich hoffe, dies hilft jemandem in der gleichen Situation.

Dwayne Forde
quelle
2
Hat mir die "keine Datei ausgewählt" nicht weggenommen.
MEM
6
Dies wird die "keine Datei ausgewählt" für mich los
Brian
@MEM, in welchem ​​Browser bist du? Dies funktioniert für mich in Chrome (mit einigen Änderungen, da ich nicht nur möchte, dass der Text verschwindet).
Brilliand
Dies ist die beste Antwort für 2020. Wenn Sie die Deckkraft auf 0 setzen, wird das gesamte Element unsichtbar.
Xenalin
12

Ich habe eine Lösung gefunden, die sehr einfach ist. Setzen Sie einfach eine leere Zeichenfolge in das title-Attribut.

<input type="file" value="" title=" " />
JNTN B77
quelle
2
Sie sollten nur title = "" machen, andernfalls zeigt title = "" einen leeren Tooltip an.
Ufukomer
9

Sie können den Tooltip deaktivieren, indem Sie einen Titel mit einem Leerzeichen in Webkit-Browsern wie Chrome und einer leeren Zeichenfolge in Firefox oder IE festlegen (getestet in Chrome 35, FF 29, IE 11, Safari Mobile).

$('input[type="file"]').attr('title', window.webkitURL ? ' ' : '');
jbier
quelle
Danke für die Bearbeitung. Ich würde gerne eine Lösung ohne wedkitURL finden, weil sie veraltet ist.
jbier
Diese Antwort ist die einzige, die für mich funktioniert hat. Sie hat gerade die Browsererkennung durch die in stackoverflow.com/questions/9847580/…
yvesmancera
8

Sehr einfach, vergessen Sie CSS, das auf die Eingabe ["Typ"] abzielt, es funktioniert bei mir nicht. Ich weiß nicht warum. Ich habe meine Lösung in meinem HTML-Tag

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

Ende des Problems

Lawel
quelle
5

Alle Antworten hier sind völlig überkompliziert oder auf andere Weise einfach völlig falsch.

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/

Ich habe diese Geige auf einfachste Weise erschaffen. Durch Klicken auf die Schaltfläche Datei auswählen wird das Menü zur Dateiauswahl geöffnet. Sie können die Schaltfläche dann beliebig stilisieren. Grundsätzlich müssen Sie nur die Dateieingabe ausblenden und einen synthetischen Klick darauf auslösen, wenn Sie auf eine andere Schaltfläche klicken. Ich habe dies vor Ort auf IE 9, FF und Chrome getestet, und alle funktionieren einwandfrei.

LadyCailin
quelle
5

Dieser funktioniert für mich (zumindest in Chrome und Firefox):

<input type="file" accept="image/*" title="&nbsp;"/>
Андрей Куценко
quelle
Das Feld des Titels (das das nicht unterbrechende Leerzeichen enthält) wird jedoch weiterhin angezeigt.
2540625
Das Titelfeld erscheint für mich mit einer leeren Zeichenfolge auf Chrom.
AshD
4

Dies ist eine schwierige Frage. Ich konnte keine Möglichkeit finden, das Element "Keine Datei ausgewählt" auszuwählen, daher habe ich eine Maske mit dem Pseudo-Selektor: after erstellt.

Meine Lösung erfordert auch die Verwendung des folgenden Pseudo-Selektors, um die Schaltfläche zu formatieren:

::-webkit-file-upload-button

Versuchen Sie Folgendes : http://jsfiddle.net/J8Wfx/1/

Zu Ihrer Information: Dies funktioniert nur in Webkit-Browsern.

PS: Wenn jemand weiß, wie man Webkit-Pseudo-Selektoren wie die oben im Webkit-Inspektor anzeigt, lass es mich wissen

Jameswakefield
quelle
Hat bei mir auf Chrom nicht funktioniert (die Geige selbst zeigt den Tooltip "Keine Datei ausgewählt")
AshD
4

Über alle Browser hinweg und einfach. das hat es für mich getan

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

Ifeanyi Chukwu
quelle
Das ist eine großartige Lösung! Es hat bei mir sehr gut funktioniert, da nach dem Hochladen der Datei der Dateiname angezeigt wird. nett und danke!
Wie wird der Tooltip entfernt? Ich sehe es immer noch
The Fool
3

Sie müssen das Steuerelement ziemlich anpassen, um dies zu erreichen.

Bitte folgen Sie der Anleitung unter: http://www.quirksmode.org/dom/inputfile.html

Ryan McDonough
quelle
1
Ich wollte dies posten und außerdem gibt es ein JQuery-Plugin, das eine ähnliche Funktion
ausführt.
1
@RyanMcDonough, ich kann keine Tipps zum Ausblenden des Tooltips in dem von Ihnen angegebenen Link sehen. Fehlt mir etwas?
Deutscher Latorre
Entschuldigung, ich sollte klarstellen. Da es keine Möglichkeit gibt, diesen Tooltip auszublenden, müssen Sie das Steuerelement für das Eingabeformular anpassen, um ein ähnliches Ergebnis zu erzielen. In gewisser Weise hackt die ursprüngliche Kontrolle.
Ryan McDonough
@Dreen, ich kann den Tooltip "Keine Datei ausgewählt" in dem von Ihnen angegebenen Link sehen, er löst das Problem nicht ...
Deutscher Latorre
3

Mit einwickeln und unsichtbar machen. Arbeiten Sie in Chrome, Safari && FF.

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

Vladimir Ishenko
quelle
2

Es ist besser, unnötiges Javascript zu vermeiden. Sie können das Label-Tag nutzen, um das Klickziel der Eingabe folgendermaßen zu erweitern:

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

Auch wenn die Eingabe ausgeblendet ist, fungiert der Link weiterhin als Klickziel, und Sie können ihn nach Belieben formatieren.

Zeit
quelle
2

Selbst wenn Sie die Deckkraft auf Null setzen, wird der Tooltip angezeigt. Probiere visibility:hiddendas Element an. Es funktioniert für mich.

Raa Vijay
quelle
1

Direkt können Sie nicht viel an der Eingabe ändern [type = file].

Stellen Sie die Deckkraft der Eingabetypdatei auf 0 und versuchen Sie, ein relatives Element [div / span / button] mit benutzerdefiniertem CSS darüber zu platzieren

Versuchen Sie dies http://jsfiddle.net/gajjuthechamp/pvyVZ/8/

Champ
quelle
1

Für mich geht das!

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

Dann können Sie verschiedene Arten von Arten verwenden wie width, heightoder anderen Eigenschaften, um Ihre eigene Eingabedatei zu erstellen.

Slorenzo
quelle
1

Überraschung, dass niemand davon erwähnt wurde event.preventDefault()

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

Sie können eine Breite für Ihr Element festlegen, die nur die Schaltfläche anzeigt und die Meldung "Keine Datei ausgewählt" ausblendet.

Sotiris
quelle
0

Ich suche nach einer guten Antwort darauf ... und fand diese:

Löschen Sie zuerst die Option "Keine Datei ausgewählt".

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

Dann betätigen Sie den Knopf mit dem -webkit-file-upload-button:

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

hoffe, das ist was du gesucht hast, es funktioniert für mich.

devash23
quelle
0

Ich habe einige der oben genannten Vorschläge mit jQuery kombiniert und Folgendes getan:

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

Und:

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

Und setzen Sie die Klasse "unbenutzt" in Ihre Dateieingaben. Das ist einfach und funktioniert ziemlich gut.

Datenhelfer
quelle
0

Die beste Lösung für mich ist, die Eingabe [type = "file"] in einen Wrapper zu packen und einen JQuery-Code hinzuzufügen:

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

Alex Black
quelle
0

Ich habe eine hackige Lösung entwickelt, die "Keine Datei ausgewählt" sowie den zusätzlichen Speicherplatz, der nach diesem Text hinzugefügt wird, vollständig entfernt (in Chrome wird Folgendes angezeigt: "Keine Datei ausgewählt").

Dies hat meine Seitenausrichtung total durcheinander gebracht, also habe ich wirklich damit gekämpft, um eine Lösung zu finden. Wenn Sie im Stilattribut des Eingabe-Tags "width" auf die Breite der Schaltfläche einstellen, werden der nachfolgende Text und die Leerzeichen entfernt. Da die Breite der Schaltfläche nicht in allen Browsern gleich ist (z. B. in Firefox etwas kleiner), sollten Sie auch die Farbe des Stils auf die gleiche Farbe wie den Hintergrund der Seite einstellen (ansonsten ein Streuner). Nein "darf durchscheinen). Mein Eingabedatei-Tag sieht folgendermaßen aus:

<input style="float:left; **width:88px;** **color:#000000;**" type="file" id="fileInput" onclick="fileOpen()">    
TonyLuigiC
quelle
Ich habe die Lösung unten bis jetzt nicht gesehen, da sie so weit unten auf der Seite war. Auf jeden Fall werde ich meine Lösung nicht löschen, da hoffentlich die Stilfarbinformationen nützlich sind (dadurch wurde das Firefox-Problem für mich behoben).
TonyLuigiC
0

Ich weiß, dass es ein kleiner Hack ist, aber alles, was ich brauchte, war, die Farbe im Stylesheet auf transparent zu setzen - Inline würde so aussehen = style = "color: transparent;".

Tgibbons
quelle