诡异BUG之:IE下表单必须提交两次
做前端遇鬼是常事儿,比如今天,就遇到个:
- IE6~10
- jQuery 1.8.3
- Backbone 0.9.2
- HTML5头
- 一个
Backbone.View,内部有一个form,View托管form的submit事件,根据class和action进行不同的操作,或者验证数据提交表单 - 第一次提交,验证通过,
return true,没反应 - 第二次提交,验证通过,
return true,表单提交 - 其它浏览器表现正常
提炼这些Bug描述就花了不少时间,反复Google也没有什么结果。比如,StackOverflow上类似问题的解答是:submit原本不会冒泡,所以应该直接侦听form;但实际上jQuery1.4之后已经支持submit事件的托管了,我的实验也支持这个结果。
至于导致问题的原因,我还没想明白也没测出来,留着以后再做吧。最后用Hack的方式暂时解决:
if ($.browser.msie && isIEFirstSubmit) {
isIEFirstSubmit = false;
setTimeout(function () {
form.submit();
}, 50);
}
有了解这个的高人还请不吝赐教。有感兴趣的同学可以去试试:http://www.dianjoy.com/dev/#/user/updateuser
相关文章
解决 load-scripts.php jQuery is not defined 的问题
不知道从哪天起,我的博客后台就坏了。没错,就是这个后台。写文章变成非常困难的一件事。各种功能都不好使,页面布局 […]
2019-06-242 分钟
GitChat:从 jQuery 里学习设计模式
文章已完成: https://gitbook.cn/gitchat/activity/5ccedbcfe5bb […]
2019-04-273 分钟
准备搞一场专题直播
准备在 SegmentFault 搞一场专题直播,标题是《jQuery, Backbone, Vue》,计划通过对比老中青三代框架开发的差异,带领大家理解前端发展的趋势,接触更好的未来。https:/
2017-03-161 分钟


