2010-05-14 65 views
0
<script> 
function attachFile(){ 
    document.getElementById("file").click(); 
    return; 
} 
</script> 

<form name="novsh" style="margin: 0px; padding: 0px;"> 
<input type="file" name="file" style="display:none" id="file" /> 
</form> 

<a href="javascript:attachFile()">Attach File</a> 
<input type="button" name="btn" value="click me" onclick="attachFile()"/> 

我写这样的,它的工作的IE浏览器,但不工作的火狐点击()不工作的火狐

+0

我会考虑能够在文件输入中调用'click()',从而自动打开文件对话框中的安全缺陷。 – RoToRa 2010-05-14 15:09:36

+0

它在其他浏览器中无法正常工作。 http://stackoverflow.com/questions/1829774/jquery-simulating-a-click-on-a-input-typefile-doesnt-work-in-firefox – bobince 2010-05-14 15:20:01

回答

4

上未形成输入元素的click()功能是非标准功能只存在于IE中。

如果你试图调用元素的onclick处理程序,你可以这样做:

document.getElementById("file").onclick(); 

编辑:

事实证明这是一个表单输入,所以...没关系。

但它看起来像你想要做的是让文件选择器对话框弹出。我不知道有任何程序化的方式来做到这一点。我同意RoToRa的评论,即这种能力可能是一个安全缺陷。

如果您的最终目标是创建可与浏览器的默认设置不同风格的文件输入元素,请查看this article

+0

为了完整性:这将调用DOM0风格的处理程序(这是他有什么)。任何DOM2风格的处理程序都不会被调用。 – 2010-05-14 15:06:56

+0

我也打算这样写,但是我查了Mozilla文档并写了一个测试文件,并且Firefox中的输入元素的确有一个“单击”功能。 – Pointy 2010-05-14 15:07:53

+0

@Pointy:他确实说过“......不是表格输入...” – 2010-05-14 15:09:25

1

Firefox不允许您在文件输入上以编程方式调用click()