2012-08-26 6 views
5

Mögliche Duplizieren:
In JavaScript can I make a “click” event fire programmatically for a file input element?Wie kann ich die Dateiauswahl mit JavaScript programmatisch öffnen?

Ich habe ganz naiv versucht, die die Dateiauswahl programmatisch mit JavaScript zu öffnen folgende (siehe Geige here):

<input type='file'>​ 

<script> 
    $(function() { 
     $('input').click(); 
    }); 
</script> 

Die oben doesn arbeite nicht. Wie kann ich die Dateiauswahl eines input type='file' mit JavaScript öffnen?

+0

Das ist natürlich, jQuery? –

+0

@JaredFarrish: jQuery oder nicht, ist mir egal. – Randomblue

+0

Aus Sicherheitsgründen können Sie das nicht tun. – SLaks

Antwort

8

Aus Sicherheitsgründen können Sie den Dialog nicht auslösen, es sei denn, es ist, als eine Reaktion auf eine Benutzerereignis ausgelöst. Sie könnten den Dialog durch einen Klick auf ein anderes Element zum Beispiel auslösen:

$(function() { 
    $(".someElement").click(function() { 
     $('#f').click(); 
    }); 
}); 

Working example.

5

Als Sicherheitsmaßnahme können Sie solche Dialoge nur bei einer Benutzereingabe öffnen, z. B. bei einem Klickereignis (auf welchem ​​Element auch immer). Sie können es nicht zufällig öffnen, z. B. beim Laden der Seite.

http://jsfiddle.net/fEBFp/2/

+2

Ich denke, es ist ein wenig seltsam, dass es keine Sicherheitsausnahme in der Konsole gibt. –

+3

Reagieren auf Benutzereingaben funktioniert gut Cross-Browser, nur eine Sache jedoch. Wenn die Dateieingabe "display: none" oder "visibility: hidden" hat, wird der Dialog in älteren Browsern möglicherweise nicht geöffnet. Hier ist ein [Geige] (http://jsfiddle.net/ult_combo/fEBFp/3/) mit einem Beispiel für alternative Maskierung ohne 'display' /' Sichtbarkeit' CSS. –

+0

Danke. In Chrome habe ich die Datei jetzt in ein 0x0px div eingefügt. In Firefox ist es nicht einmal notwendig, die Dateieingabe in das Dokument einzufügen. – Robert

Verwandte Themen