我试图重新创建 gmail 的文件上传功能——而不是使用默认的文件输入类型——我隐藏了该元素并使用 href 来模拟点击默认控件。
这部分我在所有浏览器中都工作过,但我使用文件控件的 onchange 句柄来启动文件上传(提交临时表单/将结果发布到 iframe)。问题是在选择文件后,控件在 IE 中显示为空白,但在 FF 和 Chrome 中工作正常。我只需要支持 IE 8+。
最后一个棘手的问题 - 这发生在现有表单中,因此我使用 jQuery 将表单附加到文档的底部。
<a id ="upper">Upload</a>
触发这个 jQuery
$("#upper").click(function() {
$('#dynamic_files').click();
});
动态添加表单
$().ready(function() {
$('body').append('<form id="my_form" name="upload" action="/fil/upload"
method="POST" enctype="multipart/form-data" target="my_iframe">
<iframe id="my_iframe" name="my_iframe" src="" style="display:block;"></iframe>
<input type="file" name="files[resource_file]" id="dynamic_files"
onChange="this.form.submit();" /></form>');
});
还想指出,在 IE 中,如果我单击默认文件选择器控件而不是我的“快捷方式”链接,则此代码有效