负责公司的一个b2c平台,头部那里有个搜索查询的功能,根据用户输入的内容按回车键也会跳转到响应的页面,后来在ie浏览器下惊奇的发现按回车键的同时它也会触发底部的邮箱订阅的button事件,开始以为是其它的地方用到了回车键从而冲突了,好来发现没有其它地方用到,找了好久都找不到原因,后来百度了一下,找到了相关的问题描述:
说是Button才会有这个问题,如果是a标签呢,我也做了实验,a标签是不会有这样的问题的,只有button会有
那该怎么解决呢?其实解决办法还是挺多的,比如可以把button换掉;我采用的是阻止keydown事件的默认行为preventDefault;的确解决问题。
1.阻止浏览器的默认行为
1 2 3 4 5 6 7 8 9 10 11
| function stopDefault(e) {
if(e && e.preventDefault) {
e.preventDefault(); } else {
window.event.returnValue = false; } return false; }
|
2.停止事件冒泡
1 2 3 4 5 6 7 8 9 10 11
| function stopBubble(e) {
if(e && e.stopPropagation) {
e.stopPropagation(); } else {
window.event.cancelBubble = true; } return false; }
|
具体应用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <script type="text/javascript"> function enter_down(form, event) { if(event.keyCode== "13") { stopDefault(event); submitForm(form,'actionDiv'); } }
function stopDefault(e) { if(e && e.preventDefault) { e.preventDefault(); } else { window.event.returnValue = false; } return false; }
<input id="appGrpName_s" name="appGrpName_s" type="text" />
|
这样就可以解决ie下面按回车键触发button click()事件了