Ich habe ein verstecktes Dateieingabeelement. Ist es möglich, das Dialogfeld " Datei auswählen" über das Klickereignis einer Schaltfläche auszulösen ?
javascript
jquery
html
Tamakisquare
quelle
quelle
click()
einendisplay:none
Eingang anprobiert und es hat funktioniertclick()
auf ein Element mitdisplay: none
Werken! ;) Wie sich die Dinge in den letzten vier Jahren verändert haben.hidden
stattdessen Attribut verwendenstyle="visibility:hidden"
:<input id="myInput" type="file" hidden>
( w3schools.com/tags/att_global_hidden.asp )Den meisten Antworten fehlen nützliche Informationen:
Ja, Sie können programmgesteuert mit jQuery / JavaScript auf das Eingabeelement klicken, aber nur, wenn Sie dies in einem Ereignishandler tun, der zu einem Ereignis gehört, das vom Benutzer gestartet wurde!
So passiert beispielsweise nichts, wenn Sie als Skript programmgesteuert auf die Schaltfläche in einem Ajax-Rückruf klicken. Wenn Sie jedoch dieselbe Codezeile in einen vom Benutzer ausgelösten Ereignishandler einfügen, funktioniert dies.
PS Das
debugger;
Schlüsselwort unterbricht das Suchfenster, wenn es vor dem programmatischen Klick steht ... zumindest in Chrome 33 ...quelle
$(staticElementParent).on("click", "dynamicChild", function(){})
debugger;
stört das Schlüsselwort den programmatischen Klick nicht mehrNur für die Aufzeichnung gibt es eine alternative Lösung, die kein Javascript erfordert. Es ist ein bisschen wie ein Hack, der die Tatsache ausnutzt, dass das Klicken auf ein Etikett den Fokus auf die zugehörige Eingabe legt.
Sie benötigen ein Attribut
<label>
mit einem geeignetenfor
Attribut (zeigt auf die Eingabe), das optional wie eine Schaltfläche gestaltet ist (mit Bootstrap verwendenbtn btn-default
). Wenn der Benutzer auf die Beschriftung klickt, wird der Dialog geöffnet. Beispiel:quelle
Ich bin nicht sicher, wie Browser mit Klicks auf
type="file"
Elemente umgehen (Sicherheitsbedenken und alles), aber das sollte funktionieren:Ich habe diese JSFiddle in Chrome, Firefox und Opera getestet und alle zeigen den Dialog zum Durchsuchen von Dateien.
quelle
hover
Ereignis zu öffnen : jsfiddle.net/UQfaZ/1Ich wickle das
input[type=file]
in ein Etiketten-Tag ein, gestalte es dannlabel
nach Ihren Wünschen und verstecke dasinput
.Rein CSS-Lösung.
quelle
<input type="file" hidden>
, um die Notwendigkeit zu beseitigen, einen CSS-Stil anzuwenden.Nativ besteht der einzige Weg darin, ein
<input type="file">
Element zu erstellen und dann leider einen Klick zu simulieren.Es gibt ein winziges Plugin (schamloses Plugin), das Ihnen die Mühe nimmt, dies ständig tun zu müssen: Dateidialog
quelle
Die beste Lösung funktioniert in allen Browsern .. auch auf Mobilgeräten.
Das Ausblenden des Eingabedateityps führt zu Problemen mit Browsern. Die Deckkraft ist die beste Lösung, da sie nicht ausgeblendet, sondern nur nicht angezeigt wird. :) :)
quelle
visibility:hidden
sollte es eine bessere Wahl sein.visibility: hidden
wirkt sich immer noch auf das Layout aus.display: none
ist was du willst.Aus Sicherheitsgründen gibt es keine browserübergreifende Methode. Normalerweise wird die Eingabedatei über etwas anderes gelegt und die Sichtbarkeit auf "Ausgeblendet" gesetzt, damit sie von selbst ausgelöst wird. Mehr Infos hier.
quelle
<input type="file">
nicht darüber<select>
.$.click()
.Stellen Sie sicher, dass Sie die Bindung verwenden, um Komponenten-Requisiten in REACT abzurufen
quelle
Mit jQuery können Sie
click()
einen Klick simulieren.quelle
Das hat bei mir funktioniert:
quelle
Für diejenigen, die dasselbe wollen, aber React verwenden
quelle
quelle