input type =附加到onclick事件的文件

时间:2012-02-22 18:41:08

标签: javascript html file input onclick

我有一个这样的菜单:

<ul class="sub">
    <li><a href="#">New</a></li>
    <li><a href="#">Open</a></li>
    <li><a href="#">Save</a></li>
    <li><a href="#">Help</a></li>
</ul>

我希望将onclick附加到Open li上,这会启动文件打开对话框,例如input type="file"。我可以处理附加代码到li的onclick事件,但我不知道要附加什么代码。

TIA

3 个答案:

答案 0 :(得分:6)

您可以向页面添加普通input type="file"并将其设置为隐藏样式。像这样:

<input type="file" id="theFileInput" style="display:none;" />

(本例仅使用内嵌样式,我建议将样式与标记分开。)

然后,您可以启动单击它以响应目标元素上的单击事件。使用jQuery(假设您可以在id上设置li,或者以某种方式在选择器中唯一地标识它),它将类似于:

$('#clickableLiElement').click(function() {
    $('#theFileInput').click();
});

input type="file"仍然存在,可以像任何其他表单元素一样进行交互。它对用户来说是不可见的。但这会启动“打开文件”对话框并将其值正常设置为元素,这可以正常地包含在POST中。

答案 1 :(得分:0)

上面的答案(大卫)有效,但在您的css文件中,您需要这样做:

opacity: 0;
-moz-opacity: 0;
filter:alpha(opacity=0);

display:none解决方案无法与Chrome或Safari配合使用。

答案 2 :(得分:-1)

class Author(models.Model):
    author = models.ForeignKey(User, related_name='+')

With JavaScript