我在页面上有一个表单,简单如下:
<form action="form/submit" method="post">
<button type="submit">Submit</button>
</form>
它适用于每一个浏览器,包括旧版本的IE,但在IE11中失败,标签卡在一个连续的加载循环中,在提交后永远不会改为“谢谢”页面。但是,如果我打开控制台,它就可以工作了。
我知道IE已经使用的console.log问题,并且已经在使用:
if (!window.console) {
console = {
log: function() {}
};
}
要避免它,这似乎做得很好(如上所述,每个其他IE工作)。关于问题可能存在的任何见解?
答案 0 :(得分:31)
当表单只包含没有name
属性(或没有输入元素)的输入元素时,会出现问题。我在这里找到了对这个bug的引用,虽然它也发生在桌面模式而不仅仅是地铁模式,因为链接声称:
修复是在提交表单之前创建一个虚拟<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