Как я могу исключить формы / ввод из функции, которая использует команды клавиатуры? - PullRequest
0 голосов
/ 11 ноября 2010

Я использую плагин jQuery scrollTo вместе с событиями нажатия клавиш для горизонтальной прокрутки окна с помощью клавиш J и K.Это работает довольно хорошо, однако, у меня есть формы ввода на странице, поэтому я хотел бы отключить прокрутку, когда вводы сфокусированы.Мой код ниже:

// scroll left/right
$(document).keydown(function (evt) {
  if (evt.keyCode == 75) { 
    evt.preventDefault(); 
    $.scrollTo( '+=201px', '', { axis:'x' } ); 
  } else if (evt.keyCode == 74) { 
    evt.preventDefault();
    $.scrollTo( '-=201px', '', { axis:'x' } );
  }
});

Ответы [ 2 ]

2 голосов
/ 11 ноября 2010

Вы можете проверить что-то вроде

$(document).keydown(function (evt) {
var element = $(evt.target);
if (!element.is('input,textarea')) {
  if (evt.keyCode == 75) { 
    evt.preventDefault(); 
    $.scrollTo( '+=201px', '', { axis:'x' } ); 
  } else if (evt.keyCode == 74) { 
    evt.preventDefault();
    $.scrollTo( '-=201px', '', { axis:'x' } );
  }
  }
});
0 голосов
/ 11 ноября 2010

Вы можете получить доступ к сфокусированному элементу с помощью свойства evt.target.Так что следующая модификация должна сделать эту работу:

$(document).keydown(function(evt){
  if(!$(evt.target).is("input")){
    if (evt.keyCode == 75) { 
        evt.preventDefault(); 
        $.scrollTo( '+=201px', '', { axis:'x' } ); 
    } else if (evt.keyCode == 74) { 
       evt.preventDefault();
       $.scrollTo( '-=201px', '', { axis:'x' } );
    }
 }
})
...