我有一个带有keydown处理程序和带有click处理程序的按钮的div,在该keydown处理程序中,我使用focus()方法聚焦到一个按钮上,但它会触发btn click处理程序。请告诉我为什么会发生这种情况。
注:在div上按enter键。
注:在div上按enter键。
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()
,它应该可以阻止这种情况发生。 - Amr Noman