当多个事件附加到按钮时,回车键会触发点击事件和按键
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()
为您解决了问题。
我有两个事件附加到一个按钮,当我在按钮处于焦点上时按下一个键时,按键和点击事件都会被触发。但是,如果我单击按钮,只会触发单击事件。通过添加 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()
为您解决了问题。