我正在创建一个使用空格键暂停和播放音频的音乐播放器,现在可以知道某人当前是否正在输入文本字段,因为现在,如果此用户键入文本字段并播放音频,当用户按下音频暂停的空间时,我基本上希望当用户不在用户可以播放和暂停音频的文本字段中时,但是当用户键入时该功能被禁用以便音频继续播放。下面的代码是我目前用于检测何时按下空间的代码;
//IF Space bar is Pressed
$(window).keypress(function(e) {
if(e.keyCode == 32) {
if(document.getElementById('audio').paused){
if(document.getElementById('video').style.display=="block"){
}
else{
document.getElementById('audio').play();
document.getElementById('pause').style.display="block";
document.getElementById('play').style.display="none";
}
}
else{
if(document.getElementById('video').style.display=="block"){
}
else{
document.getElementById('audio').pause();
document.getElementById('pause').style.display="none";
document.getElementById('play').style.display="block";
}
}
}
});
//END IF Space bar is pressed
答案 0 :(得分:4)
检查事件来源tagName
属性:
function(e) {
e = e || event;
var el = e.srcElement || e.target,
cando = !(/textarea|input/i.test(el.tagName));
if(cando && e.keyCode == 32) {
/etc.
}
}
答案 1 :(得分:1)
检查textarea是否有焦点
if(e.keyCode == 32 && !text_area_has_focus) { ...
如果您愿意使用jQuery,那么逻辑可能是这样的:
if(e.keyCode == 32 && !$('input[type=text]:focus').length) { ...
答案 2 :(得分:1)
您也可以尝试
if(e.keyCode == 32 && document.activeElement != document.getElementById('someTextBox'))
新代码
//IF Space bar is Pressed
$(window).keypress(function(e) {
if(e.keyCode == 32) {
var inputs = document.getElementsByTagName('input');
for(var item in inputs)
{
if(inputs[item] == document.activeElement)
return;
}
if(document.getElementById('audio').paused){
if(document.getElementById('video').style.display=="block"){
}
else{
document.getElementById('audio').play();
document.getElementById('pause').style.display="block";
document.getElementById('play').style.display="none";
}
}
else{
if(document.getElementById('video').style.display=="block"){
}
else{
document.getElementById('audio').pause();
document.getElementById('pause').style.display="none";
document.getElementById('play').style.display="block";
}
}
}
});
//END IF Space bar is pressed