javascript - IE9双表单提交问题

标签 javascript forms internet-explorer-9 double-submit-problem

我只是想知道是否有人对我所处的情况有一些信息或反馈。 目前我正面临“双重表单提交”问题,我点击“提交”按钮一次,它提交了两次表单。这只发生在 IE9 中,但我只针对 Safari、Chrome(最新版)、FF(5/6 版)、IE8 和 IE9 进行了测试。

代码如下:

<!DOCTYPE html>
<html lang="en-us" dir="ltr">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>IE9 test</title>
</head>
<body>
<h1>Testing</h1>
<form method="POST" id="submit_form">
<input type="text" name="x" value="xxxx" />
<input type="text" name="y" value="yyyy" />
<button type="submit" class="btn_sign_in" id="btn_logon" onclick="this.disabled=true;document.forms[0].submit();">Submit</button>
</form>
</body>
</html>

有问题的部分是:

onclick="this.disabled=true;document.forms[0].submit();"

代码在我的站里好久了,第一次遇到重复提交的问题,因为今年IE9才发布,可能这几天用IE9的人越来越多,所以收到用户的投诉关于这个问题。

最难的部分是双重提交问题并不总是可重现的。有时会重复提交,有时会提交一次。

我目前的解决方法是从:

<meta http-equiv="X-UA-Compatible" content="IE=edge" >

并更改为:

<meta http-equiv="X-UA-Compatible" content="IE=8" >

这会强制 IE9 使用 IE8 兼容性,并且它将正确执行 Javascript 以进行提交。

我已调用 Microsoft 支持,他们声称这是一个“Javascript 兼容性问题”,因此我们需要微调我们的 Javascript 以使我们的网站在 IE9 下正常工作..(Duh!)

无论如何,我的代码是:

onclick="this.disabled=true;document.forms[0].submit();"

一开始就错了?因为即使其他浏览器没有提示,但这可能是不正确的开始?

我希望如果有人也面临类似问题,可以提供更多信息或反馈。 目前,如果我不将 X-UA-Compatible 更改为 IE=8,我可以将我的代码更改为:

onclick="this.disabled=true;"

这也解决了双重提交问题,但是是否还有我们应该注意的 IE9 兼容性问题列表?

谢谢!

最佳答案

这段代码是错误的:

onclick="this.disabled=true;document.forms[0].submit();"

onclick Javascript 不保证正常提交也不会执行。为此,它需要返回 false,如下所示:

onclick="this.disabled=true;document.forms[0].submit(); return false;"

这种行为变化是 IE9 错误吗?这取决于,这可能取决于时间问题导致的法律行为。如果 DOM/Javacript 标准保证 document.submit() 是文档中所有执行的结束,这只是一个错误。我怀疑是这种情况。

关于javascript - IE9双表单提交问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577542/

相关文章:

javascript - 是否可以以编程方式创建报告或将其链接到 Azure 数据存储

导入脚本中文件名的 javascript 正则表达式 (js/css)

php - Jquery Submit() 基于php脚本返回值的html表单

laravel - 如何处理 token 不匹配异常

Javascript 在两个相同字符之间获取子字符串?

javascript - 如何将变量传递给 jQuery 的 .fadeOut()

html - 表单在 Firefox 中看起来不错,但在 Chrome 中看起来很乱

html - fieldset - Internet Explorer 解决方法中的虚线边框?

c# - 按钮单击仅在 IE9 中的更新面板中不起作用

c# - WatiN 和 IE9 关于多个对话框的问题