Javascript 防止空格按钮触发jQuery中的任何其他按钮单击

Javascript 防止空格按钮触发jQuery中的任何其他按钮单击,javascript,jquery,Javascript,Jquery,我有一个应用程序,我正在使用空格键切换窗口中任何位置的函数。但是,如果任何其他按钮或复选框具有焦点,则也会单击该按钮或复选框 我尝试了preventDefault(),但没有如预期的那样成功。当我按下空格键时,如何确保屏幕上没有其他元素被点击 HTML 至于答案,那个解决方案不起作用。我已经更新了JS代码,以表明我尝试了包含其中给出的解决方案。我找到了一个相对粗糙的解决方案。更好的答案是最受欢迎的 $(document).mousemove(function(event){ if (do

我有一个应用程序,我正在使用空格键切换窗口中任何位置的函数。但是,如果任何其他按钮或复选框具有焦点,则也会单击该按钮或复选框

我尝试了preventDefault(),但没有如预期的那样成功。当我按下空格键时,如何确保屏幕上没有其他元素被点击

HTML


至于答案,那个解决方案不起作用。我已经更新了JS代码,以表明我尝试了包含其中给出的解决方案。

我找到了一个相对粗糙的解决方案。更好的答案是最受欢迎的

$(document).mousemove(function(event){
    if (document.activeElement != document.body) document.activeElement.blur();
 });
基本上,它检查鼠标是否在文档体的任何位置。如果是,则会模糊任何其他具有焦点的元素。

只需使用

$(element).blur();

当任何元素(如按钮)处于焦点时(如单击按钮的事件)取消焦点。

我也有这个问题,经过一点修改后,发现触发按钮单击的是
keyup
。我做了一把小提琴来证明这一点:。它可以在Firefox和Chrome中使用,但在后者中,按钮会将外观更改为按下状态。

这将在所有按钮对焦后(例如,通过单击)立即将其调焦。这将阻止空格键激活按钮

document.querySelectorAll("button").forEach( function(item) {
    item.addEventListener('focus', function() {
        this.blur();
    })
})

对于那些希望在clickable DIV中的某些文本输入中有空格的用户,请尝试以下操作:

HTML:


或第6版:

<div id="someClickableDiv" (click)"doSomething()">
    <textarea (keyup)="$event.preventDefault()"></textarea>
</div>


这可能会有帮助,我尝试了preventDefault()。但如果另一个按钮有焦点,也会被点击。不知道为什么。显示一些代码,即如何绑定空格键?@dfsq,我添加了代码。一定要调查一下。其他按键,即97(A)和100(D)不会产生问题,因为它们没有默认绑定。@Yaakov Ellis,这不是重复的问题。看看我更新的答案。我尝试了其他的解决方案,因此发布了一个新问题。一定要投票重新开始这个问题。这很有效。我有一个与空格键相同的切换按钮,所以当空格键的上键单击按钮时,空格键在单击按钮后显示为死机。
document.querySelectorAll("button").forEach( function(item) {
    item.addEventListener('focus', function() {
        this.blur();
    })
})
<div id="someClickableDiv" onclick="doSomething()">
    <textarea onkeyup="event.preventDefault()"></textarea>
</div>
<div id="someClickableDiv" (click)"doSomething()">
    <textarea (keyup)="$event.preventDefault()"></textarea>
</div>