Javascript 检查输入是否聚焦(空格键正在使用)
我刚刚遇到了这个问题。我正在使用空格键播放/暂停页面上的一个主要播放器。在做一些测试时,我发现如果我输入搜索或评论并按下空格键,它只会继续播放并暂停播放器,这会让人恼火。我正在寻找检查输入是否集中的方法,而不是将空格键用于播放/暂停,或者将其用于播放暂停,但找不到解决方案 在逻辑方面,我需要做如下的事情Javascript 检查输入是否聚焦(空格键正在使用),javascript,jquery,Javascript,Jquery,我刚刚遇到了这个问题。我正在使用空格键播放/暂停页面上的一个主要播放器。在做一些测试时,我发现如果我输入搜索或评论并按下空格键,它只会继续播放并暂停播放器,这会让人恼火。我正在寻找检查输入是否集中的方法,而不是将空格键用于播放/暂停,或者将其用于播放暂停,但找不到解决方案 在逻辑方面,我需要做如下的事情 if (unicode == 32 "SPACEBAR" && "No input is focused, so spacebar is not used for typing
if (unicode == 32 "SPACEBAR" && "No input is focused, so spacebar is not used for typing ") {
//Some stuff here
}
检查document.activeElement
您可以尝试为此使用
document.activeElement
,并检查类型
例如:
document.activeElement.nodeName === 'INPUT'
因此,您的if应该是:
if( unicode == '32' && document.activeElement.nodeName !== 'INPUT' ) {
// play/pause video
}
使用事件目标属性:
$(document).on('keydown', function (e) {
if(!$(e.target).is('input[type=text]') && unicode === 32) {
//stuff here
}
});
按键侦听器连接在哪里?请尝试将其附加到“播放/暂停”输入。@Pietu1998它是一个$(document).keydown,这样用户在页面上的任何位置都可以随时使用空格键播放“暂停”。这应该保持原样,但我需要检查用户当前是否试图评论或搜索某些内容,而不是给空格键正常的功能。这里强制类型无用,所以最好使用===所以我会像
var userIsTyping=document.activeElement.nodeName==='INPUT'
那样使用它,然后在if语句unicode==32&!用户输入
很抱歉再次询问,对于this@Ilya请提供实际的IF条件,我将修改它。它只是检查它是否是一个空格键,所以IF(unicode==32){}
,然后在这样的IF语句中处理播放暂停