【发布时间】:2018-05-18 03:42:11
【问题描述】:
我有一个带有 keydown 处理程序的 div 和一个带有 click 处理程序的按钮,在该 keydown 处理程序中,我正在使用 focus() 方法聚焦一个按钮,但它会触发 btn click 处理程序。请告诉为什么会发生这种情况
注意:在 div 上按回车键
function btnclick() {
console.log('button click triggered');
}
function btnKeyDown() {
console.log('key down triggered');
document.getElementById('btn1').focus();
}
<div id='btn' onkeydown="btnKeyDown()" tabindex='0'>Click1</div>
<button id='btn1' onclick="btnclick()">Click Me!2</button>
【问题讨论】:
-
只有当你按回车时才会发生这种情况,而不是任何键。
-
我认为当你按下回车键时会发生这种情况,因为在你聚焦按钮后,
keydown的默认事件处理程序将在现在聚焦的按钮上运行,如果你传递事件并调用e.preventDefault()它应该防止这种情况发生。 -
是的,我正在按下回车键
标签: javascript html