IE8回车提交表单的bug

这回中枪的不是IE6了,更悲剧

问题发生的条件:

表单所在容器载入时是display:none,且表单内包含超过一个的文本框
这时候在表单内按回车就无法触发表单的submit事件(只有一个文本框时正常)

如果载入时是display:none的以后再怎么显示也没有用了

解决办法:

  • 载入DOM完毕后再隐藏元素
    这个应该是根本解决办法,但是实际操作起来很麻烦。
    首先用户可能看到不期望的显示内容闪烁,然后在一些场合下先显示会导致JS计算占位出问题(例如很多带Overlay的弹出层显示实现)
  • 强制绑定keydown事件
    判断浏览器的版本,根据需要强制绑定回车键按下的事件处理
  • 不处理
    这是我目前的处理方法,不纵容M$,哈哈

同样的bug还存在于目前最新版本的IE9测试版本中
不得不说IE真是一个奇葩,还是系列的

参考文章:
http://stackoverflow.com/questions/1427912/in-ie8-enter-key-in-a-form-does-not-work
http://stackoverflow.com/questions/964734/hitting-enter-does-not-post-form-in-ie8

IE8回车提交表单的bug》上有2条评论

  1. 番茄

    可以绝对定位,给一个很大的偏移值,定位到屏幕外边去

评论已关闭。