回车和button按钮都绑定同一个事件,如何避免按回车的时候button重复点击

我对回车进行检测,按回车的时候执行begin()函数;document.onkeydown=function(event){switch(event.keyCode){c... 我对回车进行检测,按回车的时候执行begin()函数;
document.onkeydown = function(event){
switch(event .keyCode) {
case 13 : beginLottery($("button"));break; // enter 键
}
};
button同样绑定begin()函数,因为我想用鼠标点击这个按钮的时候也能执行;
<button onclick="beginLottery(this);">开始</button>

问题出在这里,当我点击一次button之后,焦点就定位到了button上,此时每次按回车,button都会被点击两次,请问如何避免这种问题出现???
展开
 我来答
maxzhang123
推荐于2017-10-10 · TA获得超过1424个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:217万
展开全部

其实你的业务就是想实现,当我点击 Button 或者按下回车时,都触发beginLottery动作。


那么,你可以保存一个全局变量,用来记录Button的焦点状态,

<button onclick="beginLottery(this);" onfocus="window.buttonIsFocused=true;" onblur="window.buttonIsFocused=false;">开始</button>


然后,在keydown回调中增加一次校验就可以了:

document.onkeydown = function(event){
  switch(event.keyCode) {
    case 13:
      if (!window.buttonIsFocused) beginLottery($("button"));
      break; // enter 键
  }
};
百度网友445780c
2014-01-13
知道答主
回答量:11
采纳率:0%
帮助的人:12.3万
展开全部
这个情况下,我建议你加一个计数器,比如hiddenfield之类的,初始为0,点击一次按钮或者按一次回车,计数器加1。当一次正确操作后计数器置回0。这样在你按回车或者点击按钮的时候,首先去看计数器是否为0,如果不是0,那么不进行操作。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式