【发布时间】:2015-10-26 05:36:43
【问题描述】:
今天在 Internet Explorer 中发现了一个明显的错误,但无法通过研究进行验证。有没有人遇到过这种情况和/或可以解释一下吗?
概要
Internet Explorer(至少 9 和 11)并不总是触发(或处理?)提交事件。注意到单击提交按钮有点快导致某些提交被跳过的情况。在 Chrome 和 Firefox 中未发现此问题。
测试用例
- 具有单一输入和单一提交按钮的简单表单。
- 表单提交时的Javascript处理程序:显示
submit,然后返回false - Javascript 处理点击提交按钮:显示
click - 为了清晰起见使用 jQuery(使用等效的非 jQuery 解决方案会发现同样的问题)
- 要执行测试,用户必须快速双击提交按钮并观察处理了哪些事件。
测试结果
Firefox 和 Chrome 按预期工作:
click
submit
click
submit
Internet Explorer 做了一些奇怪的事情(像往常一样):
click
submit
click
没有第二次提交!仅使用 IE,不会调用客户端处理程序,并且 Fiddler 显示该请求永远不会在生产环境中发生。 (请注意,由于return false,此示例代码实际上不会发布请求。)
工作 sn-p:请向下滚动并单击 Run Snippet,然后尝试快速双击提交按钮,并观察结果。 JSFiddle
feedback = function (t) {
$div = $("<div class='line'></div>");
$div.html(t);
$("#feedback").append($div);
};
$("#theForm").on("submit", function (e) {
feedback("submit");
return false; // don't actually submit form, or SO chokes
});
$("#btnSubmit").on("click", function (e) {
feedback("click");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id='theForm' action="DISABLED BY RETURN FALSE" method="POST">
<input type='text' />
<input id='btnSubmit' type='submit' />
</form>
<div id='feedback'></div>
【问题讨论】:
标签: javascript html forms internet-explorer