Я использую плагин 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' } );
}
});
Ответ 1 · рейтинг 2 · Kai
Вы можете проверить что-то вроде
$(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' } );
}
}
});
Ответ 2 · Simon
Вы можете получить доступ к сфокусированному элементу с помощью свойства 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' } );
}
}
})