我有两个事件附加在一个按钮上,当我按下键盘时,如果该按钮获得了焦点,那么会触发keypress和click事件。但是,如果我单击按钮,则只会触发click事件。通过添加
e.preventDefault()
似乎可以解决问题,但我想知道为什么它在第一次的行为方式。
如果这是重复内容,我很抱歉,但我除了这个之外找不到相关的答案,但那里的解释不够清晰。非常感谢。
$('.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>
e.preventDefault()
解决了这个问题 - 这意味着当按下“enter”按钮时,触发聚焦项的单击事件是默认浏览器行为。如果您注意到,当您按下除“enter”以外的键时,它只会触发“keypress”事件。 - ajai Jothi