javascript - focus方法触发按钮点击事件

标签 javascript html

我有一个带有 keydown 处理程序的 div 和带有单击处理程序的按钮,在那个 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>

最佳答案

这种奇怪的行为只会在您按下 Return 键时发生。当焦点位于某个元素上时按 Return 相当于单击它。因此,当您更改焦点时,默认操作是在新获得焦点的元素上执行的,而不是原始元素。

调用 event.preventDefault() 可以防止这种情况发生。

function btnclick() {
  console.log('button click triggered');
}

function btnKeyDown(event) {
  console.log('key down triggered');
  document.getElementById('btn1').focus();
  event.preventDefault();
}
<div id='btn' onkeydown="btnKeyDown(event)" tabindex='0'>Click1</div>
<button id='btn1' onclick="btnclick()">Click Me!2</button>

关于javascript - focus方法触发按钮点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50403457/

相关文章:

javascript - ASP.NET MVC Controller 结果返回查看

javascript - 将客户端功能添加到表中

javascript - 在循环内初始化 onchange 事件 - Javascript

html - 为什么在 chrome 中按钮看起来不如在 firefox 中好?

html - 直接用html定义图片好还是css好?

javascript - 动态文本 div 的宽度为 20%,高度应与 flexbox 中的图像 div 相同

html - 当列表等间距且居中时,如何使列表中的一个元素比其他元素高>

JavaScript Accordion 菜单适用于 IE,不适用于 Chrome 或 Firefox

javascript - TranslateZ 百分比 CSS 3D 变换

javascript - 点击显示隐藏文字