当多个事件附加到按钮时,回车键会触发点击事件和按键

Enter key fires both click event and keypress when multiple events are attached to button

我有两个事件附加到一个按钮,当我在按钮处于焦点上时按下一个键时,按键和点击事件都会被触发。但是,如果我单击按钮,只会触发单击事件。通过添加 e.preventDefault() 似乎可以解决问题,但我想首先了解为什么它会这样。 抱歉,如果这是重复的,但除了 this one 之外我找不到相关的答案,但那里的解释不够清楚。 非常感谢。

$('.btn').on('click keypress',function(e){
  console.log(e.type);
});
<button type="button" class="btn" >click me</button>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

按钮焦点

如果您按下任何键 除了(space 和回车) 只有按键事件会触发

但是

如果您 关注 按钮并按下 space 或输入 这将触发两个事件,因为 这是浏览器的默认行为 也是出于同样的原因e.preventDefault() 为您解决了问题。