2012-05-29 3 views
10

Mögliche Duplizieren:
Jquery trigger file inputWie verknüpfe ich eine Eingabeschaltfläche mit einem Dateiauswahlfenster?

ich auf einem Formular gerade arbeiten, die Benutzer Bilder auf eine Website hochladen kann. Bis jetzt habe ich eine Drag-and-Drop-Lösung, die in Chrome und Safari funktioniert. Allerdings muss ich auch die Aktion von Benutzern unterstützen, die auf eine Schaltfläche klicken und auf herkömmliche Weise nach Dateien suchen.

ähnlich wie diese tun würde:

<input type="file" name="my_file"> 

Jedoch anstatt der klobige Dateibeschreibungsbereich und unveränderbare Schaltfläche Durchsucht ich eher so etwas wie diese verwenden würde:

<input type="button" id="get_file"> 

Meine Frage Deshalb, wie mache ich diesen Knopf öffnen ein Dateiauswahlfenster und bearbeiten Sie die Auswahl auf die gleiche Weise, dass type="file" würde funktionieren?

Prost.


Meine Lösung

HTML:

<input type="button" id="my-button" value="Select Files"> 
<input type="file" name="my_file" id="my-file"> 

CSS:

#my-file { visibility: hidden; } 

jQuery:

$('#my-button').click(function(){ 
    $('#my-file').click(); 
}); 

Arbeiten in Chrome, Firefox und IE7 + bisher (habe IE6 nicht versucht).

+2

Es gibt Millionen andere, aber keine Zeit, das beste Duplikat zu wählen – Esailija

+1

Überprüfen Sie diese http://StackOverflow.com/Questions/7132553/jquery-trigger-how-can-i-trigger-the-browse- Datei-in-dem-Eingang-wenn-ich-Klick-auf-a. Es könnte dir helfen. – TRR

+0

@Esailija wo fragt er nach jQuery? Link, aber nicht betrogen. – rlemon

Antwort

13

Sie könnten JavaScript verwenden und die Eingabe der versteckten Datei auslösen, wenn auf die Tasteneingabe geklickt wurde.

http://jsfiddle.net/gregorypratt/dhyzV/ - einfache

http://jsfiddle.net/gregorypratt/dhyzV/1/ - schicker mit einem kleinen JQuery

Oder könnten Sie ein div direkt über die Datei-Eingabe Stil und setzten pointer-events in CSS zu keinem den Click-Ereignissen zu durchlassen zu die Dateieingabe, die "hinter" der Phantasie div ist.Dies funktioniert jedoch nur in bestimmten Browsern. http://caniuse.com/pointer-events

+0

hatte noch nie von 'pointer-events' gehört. Leider keine gute Lösung, da ich möchte, dass dies in früheren Versionen von IE funktioniert. Die jsfiddle-Lösung sieht jedoch gut aus ... Ich werde es genauso gut ausprobieren wie die obigen Vorschläge. – diggersworld

+0

Ich bin froh, Ihnen helfen zu können.Sie könnten ein separates CSS-Bit für IE haben, das das ausgefallene div versteckt und die Standard-Dateieingabe als zeigt eine Art Fallback – Greg

+0

Vorsicht bei der Anzeige: keine auf Eingabedateielemente. https://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ – lenord

3

Wenn Sie dem Benutzer erlauben möchten, nach einer Datei zu suchen, müssen Sie eine input type="file" haben Die nächste, die Sie an Ihre Anforderung erhalten könnten, wäre input type="file" auf der Seite zu platzieren und es auszublenden. Dann löst das Click-Ereignis der Eingabe, wenn die Schaltfläche geklickt wird:

#myFileInput { 
    display:none; 
} 

<input type="file" id="myFileInput" /> 
<input type="button" 
     onclick="document.getElementById('myFileInput').click()" 
     value="Select a File" /> 

a working fiddle hier.

Hinweis: Ich würde diesen Ansatz nicht empfehlen. Der input type="file" ist der Mechanismus, den Benutzer zum Hochladen einer Datei verwenden.

+0

Sie können nicht klicken Sie auf Eingangstyp Datei, um Dateidialog zu öffnen, vielleicht in Firefox obwohl – Esailija

+0

Works für mich in Chrome 19/Linux – rlemon

+0

Könnte sein, weil der Aufruf-Stack mit einer Benutzeraktion wie Klick obwohl .. aber immer noch warum beginnt Bei dieser Arbeit wäre es leicht, jemanden dazu zu bringen, Zugang zu Dateien zu gewähren – Esailija

Verwandte Themen