跨浏览器打开文件浏览对话框

我一直在寻找那个圣杯 – HTML中的好文件对话框。 我想出了一个解决方案,当单击一个按钮时,使用jQuery click()隐藏的(隐藏)文件元素。 这在FireFox 4中运行良好,但Chrome和Opera失败。 将click()更改为focus()适用于Chrome,但Opera中没有任何function。 我还没有测试IE,但我还不想生活。

这是当前的代码:

HTML

 

jQuery的

 $(".formFile input[type='file']").live('change', function() { $(this).parents(".formFile").find("input[type='text']").val($(this).val()); }); $(".formFile input[type='button']").live('click', function() { $(this).parents(".formFile").find("input[type='file']").click(); }); $(".formFile input[type='text']").live('click', function() { $(this).parents(".formFile").find("input[type='file']").click(); }); 

任何人都可以提供使用jQuery / JavaScript打开文件对话框的跨浏览器方式吗? 由于需要输入交互(CSS :hover )等,我不想使用透明元素技巧。

尝试使用trigger()

 $(this).parents(".formFile").find("input[type='file']").trigger('click'); 

这可能是晚了几年,但这是一种没有任何Javascript的方式,它也是跨浏览器。

  

如果您发现问题,可能需要在标签中使用指向输入id的for属性。