【问题标题】:How to disable Enter key from pressing buttons?如何禁用按按钮的 Enter 键?
【发布时间】:2021-06-30 00:37:36
【问题描述】:

我目前有一个带有 onclick 属性的按钮,指向一个 JS 函数。 用鼠标单击它后,按 Enter 键也会单击该按钮,我想禁用它。 我的按钮:

<button onclick = "action()">Button</button>

我的 JS 函数:

function action(){
//do something
}

我尝试了Disable Enter KeyDisabling enter key for form 的解决方案,但它们不起作用。 我该如何解决这个问题?我不应该使用 onclick 吗?我想要一个纯 JS 的解决方案。

【问题讨论】:

  • 抱歉,但这还远远不足以了解您的代码中发生了什么。就像,这个//do something 是什么可能是相关的。那么&lt;button&gt; 的默认类型是&lt;button type="submit"&gt; 那么,是否有&lt;form&gt; 围绕它,它如何处理提交?请扩展您的代码以正确表示并复制问题。
  • @Thomas 我做了一个快速的代码笔:codepen.io/Crypt1111/pen/bGgWmLr。就像如果你用鼠标按下按钮,然后如果你按下 Enter,它仍然会点击,我想禁用它。

标签: javascript button enter


【解决方案1】:

你可以让一个事件监听器监听 keydown 事件并检查它是否是 enter 键和你的按钮的目标。在这种情况下禁用该事件。

这样的东西应该可以工作,你可以添加正确的类型:

window.addEventListener('keydown',(e) => {  
  if (e.keyIdentifier =='U+000A' || e.keyIdentifier =='Enter' || e.keyCode == 13)
    if (e.target.nodeName=='BUTTON' && e.target.type=='') {
      e.preventDefault()
      e.stopPropagation()
      return false
  }
}, true);

【讨论】:

  • 感谢您的回复,但无法正常工作。我要解决的问题是,假设您用鼠标单击按钮一次,但是如果您按 Enter 键,它将不断单击该按钮。 @翻转
  • 但是@SomeRandomCoder 这与您提出的问题/问题不同。
  • @SomeRandomCoder 我同意托马斯的观点,请更具体地说明你想要什么,如果它解决了问题中描述的问题,请考虑接受答案。
  • @Thomas 很抱歉造成误解。我编辑了问题。
【解决方案2】:

尝试将按钮设置为 .blur() 或将焦点设置到另一个元素

<button onclick = "action();">Click this</button>

function action(){
    //do something
    this.blur()
}

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 2021-10-28
    • 2015-07-31
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多