在文本字段中键入时,js停用空格键

时间:2011-06-09 20:41:56

标签: javascript audio textfield space

我正在创建一个使用空格键暂停和播放音频的音乐播放器,现在可以知道某人当前是否正在输入文本字段,因为现在,如果此用户键入文本字段并播放音频,当用户按下音频暂停的空间时,我基本上希望当用户不在用户可以播放和暂停音频的文本字段中时,但是当用户键入时该功能被禁用以便音频继续播放。下面的代码是我目前用于检测何时按下空间的代码;

//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

3 个答案:

答案 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