IE11-仅提交错误

时间:2013-11-22 16:28:28

标签: javascript forms internet-explorer internet-explorer-11

我在页面上有一个表单,简单如下:

<form action="form/submit" method="post">
    <button type="submit">Submit</button>
</form>

它适用于每一个浏览器,包括旧版本的IE,但在IE11中失败,标签卡在一个连续的加载循环中,在提交后永远不会改为“谢谢”页面。但是,如果我打开控制台,它就可以工作了。

我知道IE已经使用的console.log问题,并且已经在使用:

if (!window.console) {
    console = {
        log: function() {}
    };
}

要避免它,这似乎做得很好(如上所述,每个其他IE工作)。关于问题可能存在的任何见解?

8 个答案:

答案 0 :(得分:31)

当表单只包含没有name属性(或没有输入元素)的输入元素时,会出现问题。我在这里找到了对这个bug的引用,虽然它也发生在桌面模式而不仅仅是地铁模式,因为链接声称:

http://connect.microsoft.com/IE/feedback/details/807447/ie-11-metro-version-submitting-form-fails-if-input-tag-has-no-name-attribute

修复是在提交表单之前创建一个虚拟<input type="hidden" name="dummy" value="something">字段(带有名称和值集)。

该错误发生在IE11提供的所有兼容模式中。

答案 1 :(得分:10)

我只是花了太多时间来处理这个bug。疯狂的部分是,如果您打开开发工具(f12),IE11允许表单提交。这是我在提交按钮之前的内容:

<input type="hidden" name="ie11sux" id="ie11sux" value="<?php echo md5(microtime()."ie11sux"); ?>"/>

答案 2 :(得分:9)

这是IE11中的一个错误。如果为按钮添加名称属性,则可以修复它,例如:

<button type="submit" name="foo" ...

答案 3 :(得分:6)

没有命名元素的表单将导致IE11 + W8.1上的提交无限循环。要解决此问题,只需在按钮中添加名称属性:

<form action="form/submit" method="post">
  <input type="submit" name="cm" value="Submit">
</form>

答案 4 :(得分:4)

这与OP的问题没有直接关系,但是仅提供IE表单提交问题:

如果您在提交活动期间碰巧设置form.prop('disabled', true),其他浏览器仍会发送表单数据,但IE不会 - 它会发送一个空的请求正文。

答案 5 :(得分:0)

对我来说,我有空的隐藏字段,标记为必需。非常愚蠢,但它是适合我的解决方案。

答案 6 :(得分:0)

对于IE11,有:

event.returnValue = false;

检查event.preventDefault是否存在,以防止发生最终错误:

event.preventDefault ? event.preventDefault() : (event.returnValue = false);

答案 7 :(得分:-1)

您的问题是由服务器端的.net 4问题引起的。 请阅读:'WebForm_DoPostBackWithOptions' is undefined in IE11 Preview

您可以启用IE调试功能并尝试提交,您可能会看到错误:WebForm_DoPostBackWithOptions

我通过补丁修复了IE11的类似提交问题: http://support.microsoft.com/kb/2836939