gpt4 book ai didi

javascript - 使用 jQuery 在 IE10 中动态提交文件上传表单

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:36 25 4
gpt4 key购买 nike

我有一个表单,其唯一目的是上传文件,但出于用户体验的原因,我需要一个漂亮的按钮:

  1. 加载文件对话框
  2. 选择文件后自动提交表单

最初的解决方案类似于 this JSFiddle ,您有一个加载文件对话框的链接,然后监听对话框的 change 事件以自动提交表单:

$("input[type=file]").on("change", function () {
// auto-submit form
$("form").submit();
});

$("#my-nice-looking-button").on("click", function (e) {
e.preventDefault();
// load file dialog
$("input[type=file]").trigger("click");
});

如果您尝试使用该 fiddle ,它将在 IE9、Chrome、Firefox 等中运行,但在 Internet Explorer 10 中不起作用。所有 JavaScript 功能都可以运行,包括表单的 submit事件被解雇。但是,浏览器从不将表单数据 POST 到服务器;它只是坐在那里。

IE10 中是否内置了一些安全保护措施或文件上传限制来阻止它工作?

最佳答案

事实证明,是的,IE10 不允许您以编程方式加载文件对话框在文件对话框上的change 事件后自动提交表单。据推测,一个或另一个会起作用,但不会同时起作用。除了我自己的实验,我还没有找到任何文件来支持这一说法。

我找到的解决方案是使用 CSS 设置文件对话框按钮的样式,使其不可见,但位于漂亮按钮的顶部,这样当您认为单击按钮,您实际上是在单击文件对话框的“选择”按钮:

input[type=file] {
/* positioning strategies will vary depending on design */
font-size: 25px;
position: relative;
top: -50px;
left: -10px;

/* make it invisible! */
opacity: 0;

/* make the cursor act like it's hovering over an anchor tag */
cursor: pointer;
cursor: hand;
}

然后你只需要监听 change 事件并像以前一样提交表单:

$("input[type=file]").on("change", function () {
// auto-submit form
$("form").submit();
});

这样做意味着您正在“有机地”加载文件对话框,而 IE10 允许它发生并允许您自动提交表单。

此解决方案也适用于 WebKit 和 Firefox。

关于javascript - 使用 jQuery 在 IE10 中动态提交文件上传表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com