Gibt es eine Möglichkeit, ein <input type=file />
Element (oder ein Skript) so zu gestalten, dass nur die Schaltfläche "Durchsuchen" ohne Textfeld sichtbar ist?
Vielen Dank
Edit : Nur um zu klären warum ich das brauche. Ich verwende den Upload-Code für mehrere Dateien von http://www.morningz.com/?p=5 und er benötigt kein Eingabetextfeld, da er niemals einen Wert hat. Das Skript fügt der Sammlung auf der Seite nur neu ausgewählte Dateien hinzu. Ohne Textfeld würde es viel besser aussehen, wenn es möglich ist.
javascript
html
css
Andrija
quelle
quelle
Ich hatte verdammt viel Zeit damit zu versuchen, dies zu erreichen. Ich wollte keine Flash-Lösung verwenden, und keine der von mir betrachteten jQuery-Bibliotheken war in allen Browsern zuverlässig.
Ich habe meine eigene Lösung entwickelt, die vollständig in CSS implementiert ist (mit Ausnahme der Änderung des Onclick-Stils, damit die Schaltfläche "angeklickt" angezeigt wird).
Sie können ein funktionierendes Beispiel hier ausprobieren: http://jsfiddle.net/VQJ9V/307/ (Getestet in FF 7, IE 9, Safari 5, Opera 11 und Chrome 14)
Es funktioniert, indem eine große Dateieingabe (mit einer Schriftgröße von 50 Pixel) erstellt und dann in ein Div mit fester Größe und festem Überlauf eingeschlossen wird: versteckt. Die Eingabe ist dann nur durch dieses "Fenster" div sichtbar. Dem Div kann ein Hintergrundbild oder eine Hintergrundfarbe zugewiesen werden, Text kann hinzugefügt werden und die Eingabe kann transparent gemacht werden, um den Div-Hintergrund anzuzeigen:
HTML:
CSS:
Lassen Sie mich wissen, wenn es Probleme gibt, und ich werde versuchen, diese zu beheben.
quelle
Ich habe heute meinen Tag damit verschwendet, dies zum Laufen zu bringen. Ich habe hier keine der Lösungen gefunden, die für jedes meiner Szenarien geeignet sind.
Dann erinnerte ich mich, dass ich ein Beispiel für das Hochladen von JQuery-Dateien ohne Textfeld gesehen hatte. Also habe ich ihr Beispiel genommen und es auf den relevanten Teil reduziert.
Diese Lösung funktioniert zumindest für IE und FF und kann vollständig gestaltet werden. Im folgenden Beispiel ist die Dateieingabe unter der ausgefallenen Schaltfläche "Dateien hinzufügen" ausgeblendet.
quelle
Blenden Sie das Element der Eingabedatei aus und erstellen Sie eine sichtbare Schaltfläche, die das Klickereignis dieser Eingabedatei auslöst.
Versuche dies:
CSS
HTML:
JAVASCRIPT (jQuery):
quelle
Blenden Sie das Eingabedatei-Tag mit CSS aus, fügen Sie eine Beschriftung hinzu und weisen Sie sie der Eingabeschaltfläche zu. Die Beschriftung kann angeklickt werden. Wenn Sie darauf klicken, wird der Dateidialog geöffnet.
Fügen Sie den Stil als Schaltfläche zum Etikett hinzu.
Live-Demo
quelle
onchange
Handler hinzufügeninput
, damit JS-Code die hochgeladenen Dateiinformationen abrufen kann.Das wird sehr schwer. Das Problem mit dem Dateieingabetyp besteht darin, dass er normalerweise aus zwei visuellen Elementen besteht und gleichzeitig als ein einzelnes DOM-Element behandelt wird. Hinzu kommt, dass mehrere Browser ein eigenes Erscheinungsbild für die Dateieingabe haben und Sie auf einen Albtraum eingestellt sind. In diesem Artikel auf quirksmode.org finden Sie Informationen zu den Macken, die die Dateieingabe aufweist. Ich garantiere dir, es wird dich nicht glücklich machen (ich spreche aus Erfahrung).
[BEARBEITEN]
Eigentlich denke ich, dass Sie möglicherweise davonkommen, wenn Sie Ihre Eingabe in ein Containerelement (wie ein div) einfügen und dem Element einen negativen Rand hinzufügen. Das Textfeldteil wird effektiv außerhalb des Bildschirms ausgeblendet. Eine andere Möglichkeit wäre, die Technik in dem Artikel, den ich verlinkt habe, zu verwenden, um zu versuchen, sie wie eine Schaltfläche zu gestalten.
quelle
Fix funktioniert in allen Browsern BEHOBEN:
Ich habe in FF, Chrome & IE getestet - funktioniert gut, auch angewandte Stile: D.
quelle
Ich habe versucht, die beiden Top-Lösungen zu implementieren, und es war eine RIESIGE Zeitverschwendung für mich. Am Ende löste das Anwenden dieser CSS-Klasse das Problem ...
Getan! super sauber und super einfach ...
quelle
Ein weiterer einfacher Weg, dies zu tun. Erstellen Sie ein "Input Type File" -Tag in HTML und blenden Sie es aus. Klicken Sie dann auf eine Schaltfläche und formatieren Sie sie nach Bedarf. Verwenden Sie anschließend Javascript / jquery, um programmgesteuert auf das Eingabe-Tag zu klicken, wenn Sie auf die Schaltfläche klicken.
HTML: -
JavaScript: -
jQuery: -
CSS: -
Hier ist eine funktionierende JS-Geige für dasselbe: - http://jsfiddle.net/32na3/
quelle
Ich habe einen Teil des oben empfohlenen Codes verwendet und nach vielen Stunden meiner Zeit kam ich schließlich zu einer Lösung ohne CSS-Beutel.
Sie können es hier ausführen - http://jsfiddle.net/WqGph/
fand dann aber eine bessere Lösung - http://jsfiddle.net/XMMc4/5/
quelle
onchange
Ereignis für das versteckteinput
Element nicht ausgelöst wird .Hier ist mein gutes altes Mittel:
Zumindest hat es in Safari funktioniert.
Schlicht und einfach.
quelle
Sie können ein Bild beschriften, sodass beim Klicken das Klickereignis der Schaltfläche ausgelöst wird. Sie können die normale Schaltfläche einfach unsichtbar machen:
Es hat bei mir in allen Browsern funktioniert und ist sehr einfach zu bedienen.
quelle
Sie können das Klickereignis für eine versteckte Dateieingabe wie folgt auslösen:
quelle
var ev = document.createEvent('HTMLEvents');
Ändern Sie HTMLEvents in MouseEventsvar ev = document.createEvent('MouseEvents');
HTML:
JQUERY
Hoffe das funktioniert :)
quelle
Sie können dem Eingabeelement eine Schriftopazität von 0 geben. Dadurch wird das Textfeld ausgeblendet, ohne die Schaltfläche "Dateien auswählen" auszublenden.
Kein Javascript erforderlich, löschen Sie den Cross-Browser bereits im IE 9
Z.B,
quelle
Ich habe eine wirklich hackige Lösung damit ...
Das Problem ist, dass das width-Attribut, das das Textfeld verbirgt, offensichtlich zwischen den Browsern, zwischen Windows XP-Designs usw. variiert. Vielleicht ist es etwas, mit dem du arbeiten kannst? ...
quelle
Ich weiß, dass dies ein alter Beitrag ist, aber eine einfache Möglichkeit, den Text verschwinden zu lassen, besteht darin, die Textfarbe auf die Ihres Hintergrunds einzustellen.
Beispiel: Wenn Ihr Texteingabehintergrund weiß ist, dann:
Dies wirkt sich nicht auf den Text "Datei auswählen" aus, der aufgrund des Browsers immer noch schwarz ist.
quelle
Das funktioniert bei mir:
quelle
Meine Lösung besteht darin, es innerhalb eines Divs zu setzen, wie "Druveen" sagte, aber ich füge dem Div meinen eigenen Schaltflächenstil hinzu (lass es wie eine Schaltfläche mit einem: Hover aussehen) und ich setze einfach den Stil "Deckkraft: 0;" zum Eingang. Funktioniert ein Zauber für mich, hoffe es tut das gleiche für dich.
quelle
Ich habe gerade eine Eingabedatei mit einer Breite von 85 Pixel gestylt, und das Textfeld ist überhaupt verschwunden
quelle
Dieser HTML-Code zeigt nur die Schaltfläche Datei hochladen an
quelle
quelle
Für mich ist der einfachste Weg, eine Schriftfarbe wie die Hintergrundfarbe zu verwenden. Einfach, nicht elegant, aber nützlich.
quelle
Hier ist der beste Weg, dies für alle Browser zu tun :
Vergiss CSS!
quelle
Alle diese Antworten sind niedlich, aber CSS funktioniert nicht, da es nicht für alle Browser und Geräte gleich ist. Die erste Antwort, die ich geschrieben habe, funktioniert nur für Safari. Damit es in allen Browsern funktioniert, muss es dynamisch erstellt und jedes Mal neu erstellt werden, wenn Sie den Eingabetext löschen möchten:
quelle
Die Antwort von tmanthey ist ziemlich gut, außer dass Sie in Firefox v20 nicht mit der Randbreite spielen können. Wenn Sie den Link sehen (Demo, kann hier nicht wirklich angezeigt werden), haben sie das Problem mit font-size = 23px gelöst. Transformieren Sie: translate (-300px, 0px) scale (4), damit Firefox die Schaltfläche vergrößert.
Andere Lösungen, die .click () für ein anderes div verwenden, sind nutzlos, wenn Sie es zu einem Drag'n'Drop-Eingabefeld machen möchten.
quelle
Hier gibt es mehrere gültige Optionen, aber ich dachte, ich würde das geben, was ich mir ausgedacht habe, während ich versucht habe, ein ähnliches Problem zu beheben. http://jsfiddle.net/5RyrG/1/
quelle
Mit folgendem Code behoben:
<div style="overflow: hidden;width:83px;"> <input style='float:right;' name="userfile" id="userfile" type="file"/> </div>
quelle
Ich habe das geschrieben:
Funktioniert einwandfrei in allen Browsern, ohne jQuery, ohne CSS.
quelle
Hier ist eine vereinfachte Version der beliebten Lösung von @ ampersandre, die in allen gängigen Browsern funktioniert. Asp.NET-Markup
JQuery-Code
CSS-Code
Verwendet einen versteckten "UploadButton" -Klick-Trigger für das Server-Postback mit Standard. Der Text mit "Datei hochladen" verdrängt das Eingabesteuerelement im Wrapper-Div, wenn es überläuft, sodass keine Stile für das Steuerelement "Dateieingabe" angewendet werden müssen. Der Selektor $ ([id $ = "FileInput"]) ermöglicht den Abschnitt von IDs mit angewendeten Standard-ASP.NET-Präfixen. Der FilePath-Textfeldwert wird aus dem Servercode hinter hdnFileName.Value festgelegt, sobald die Datei hochgeladen wurde.
quelle