JQuery: сделать это на Keyup, если человек не в текстовой области или ввода - PullRequest
6 голосов
/ 24 сентября 2010

мой скрипт работает, но я не понимаю, как сделать так, чтобы он НЕ запускал функции, когда в текстовой области / вводе и эти клавиши нажаты.aka: запустить событие, когда пользователь нажимает эту клавишу, если пользователь не находится в текстовой области / ввод.

$('body').keyup(function (event) {

var direction = null;
if (event.keyCode == 37) {
  $('#wrapper').fadeOut(500)
} else if (event.keyCode == 39) {
        $('html,body').animate({scrollTop: $('body').offset().top}, {duration: 1500, easing: 'easeInOutQuart'}
        )
return false;    
}
     })

Ответы [ 3 ]

10 голосов
/ 24 сентября 2010

Просто проверьте event.target:

$('body').keyup(function(event) {
    if ($(event.target).is(':not(input, textarea)')) {
       ...
    }
});

В этом случае у вас все еще будет только один обработчик события (прикрепленный к телу), но он будет фильтровать элементы, получающие событие

1 голос
/ 24 сентября 2010
$('body :not(textarea,input[type=text])').keyup(function (event) {

или

$('body').not('textarea,input[type=text]').keyup(function (event) {
1 голос
/ 24 сентября 2010

Попробуйте:

$('body *:not(textarea,input)').keyup(function (event) {

});
...