IE11-Only Submit Bug
IE11-Only Submit Bug
我在一个页面上有一个表单,很简单,比如:
<form action="form/submit" method="post">
<button type="submit">Submit</button>
</form>
它适用于每一个浏览器,包括旧版本的IE,但在IE11中它失败了,标签卡在一个连续的加载循环中,提交后从未更改为"谢谢"页面。但是,如果我打开控制台,它确实可以工作。
我知道IE的console.log问题,并且已经在使用:
if (!window.console) {
console = {
log: function() {}
};
}
为了避免它,这似乎做得很好(如前所述,其他所有IE都有效)。关于问题可能在哪里,有什么见解吗?
当表单只有输入元素而没有name
属性(或没有输入元素)时,就会出现问题。我在这里找到了这个错误的参考,尽管它也发生在桌面模式下,而不仅仅是链接所说的城域模式:
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提供的所有兼容模式中。
我只是在这个bug上花了太多时间。疯狂的部分是,如果你打开了开发工具(f12),IE11允许表单提交。这是我放在提交按钮前的内容:
<input type="hidden" name="ie11sux" id="ie11sux" value="<?php echo md5(microtime()."ie11sux"); ?>"/>
这是IE11中的一个错误。如果你在按钮上添加一个名称属性,你可以修复它,比如:
<button type="submit" name="foo" ...
在IE11+W8.1上提交时,没有命名元素的表单将导致无限循环。要解决此问题,只需在按钮中添加一个属性名称:
<form action="form/submit" method="post">
<input type="submit" name="cm" value="Submit">
</form>
这与OP的问题没有直接关系,而是一个仅限IE的表单提交问题:
如果您在提交事件期间碰巧设置了form.prop('disabled', true)
,其他浏览器仍然会发送表单数据,但IE不会——它会发送一个空的请求体。
对我来说,我有标记为必需的空隐藏字段。相当愚蠢,但这是对我有效的解决方案。
对于IE11,有:
event.returnValue = false;
检查event.preventDefault是否存在以防止出现最终错误:
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
您的问题是由服务器端的.net 4问题引起的。请阅读:"WebForm_DoPostBackWithOptions"在IE11预览中未定义
您可以启用IE调试功能并尝试提交,您可能会看到错误:WebForm_DoPostBackWithOptions
我通过以下补丁修复了IE11的类似提交问题:http://support.microsoft.com/kb/2836939
- jQuery submit()的角度等效项
- Javascript form.submit()方法是如何工作的
- 如何在submit to sightly时将表单输入值作为参数传递给WCMUsePojo
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- This.Form.Submit() on CakePHP
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery函数无法处理Form Submit
- 为什么表单元素不应命名为submit
- javascript表单字段submit:Object dos'在IE8中不支持此属性或方法
- 单选按钮的验证(启用)&使用Jquery Optimization从复选框中选择submit按钮
- 如何使用SpringWebFlow在JavaScript中处理form.submit()
- onsubmit返回false,但submit仍然执行
- Socket.io客户端在使用名称空间时忽略端口[Bug?]
- angularjs formly submit bug in safari & IE 11
- 如何获得<html:submit>按钮是在javascript中单击的
- this.form.submit()无法正常使用php
- 清空$_GET和$_POST,表单使用form.submit()
- Bug修复放弃了Firefox插件Wikilook
- 在带有参数列表的表单submit上调用一个方法
- IE11-Only Submit Bug