2012-08-26 25 views
5

可能重复:
In JavaScript can I make a “click” event fire programmatically for a file input element?如何以编程方式使用JavaScript打开文件选取器?

我曾天真地尝试了以下使用JavaScript编程方式打开文件选择器(见小提琴here):

<input type='file'>​ 

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

以上没有按没有工作。如何用JavaScript打开input type='file'的文件选取器?

+0

也就是说,jQuery? –

+0

@JaredFarrish:jQuery与否,我不在乎。 – Randomblue

+0

出于安全原因,你不能那样做。 – SLaks

回答

8

出于安全考虑,您不能触发对话,除非是为一些用户的响应触发事件。您可以通过点击其他元素触发对话框:

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

Working example

5

作为一项安全措施,您只能在用户输入上打开此类对话框,例如点击事件(在任何元素上)。您无法随意打开它,例如在页面加载时。

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

+2

我认为这有点奇怪,但控制台中没有安全异常。 –

+3

响应用户输入很好地跨浏览器,但只是一件事。如果文件输入具有“display:none”或“visibility:hidden”,则对话框可能无法在较旧的浏览器中打开。这里有一个[fiddle](http://jsfiddle.net/ult_combo/fEBFp/3/),它使用了不带'display' /'visibility' CSS的替代掩码的例子。 –

+0

谢谢。在Chrome中,我现在将文件输入放入一个0x​​0px div。在Firefox中,甚至不需要将文件输入插入到文档中。 – Robert

相关问题