JS деактивировать пробел при наборе текста в текстовом поле - PullRequest
1 голос
/ 10 июня 2011

Я создаю музыкальный проигрыватель, который использует пробел для приостановки и воспроизведения звука. Теперь можно узнать, печатает ли кто-то текст в текстовом поле, потому что прямо сейчас, если этот пользователь печатает текстовое поле и воспроизводится звук,когда пользователь нажимает пробел, паузы звука, я хотел бы, в основном, чтобы, когда пользователь не находится в текстовом поле, пользователь мог просто воспроизводить и приостанавливать звук, но когда пользователь печатает, эта функция отключена, поэтому звук продолжает воспроизводиться.Код ниже - это код, который я сейчас использую для определения нажатия клавиши пробела;

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

4 голосов
/ 10 июня 2011

Проверка источников событий 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 голос
/ 10 июня 2011

Вы также можете попробовать

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
1 голос
/ 10 июня 2011

Проверьте, имеет ли текстовая область фокус

if(e.keyCode == 32 && !text_area_has_focus) { ... 

Логика для этого может быть примерно такой, если вы хотите использовать jQuery:

if(e.keyCode == 32 && !$('input[type=text]:focus').length) { ... 
...