Я думаю, вы имеете в виду, что вы хотите сделать e.preventDefault()
, только если целевой элемент не был тегом input
.Вы можете сделать это следующим образом:
$(document).keydown(function(e) {
if (e.target.nodeName.toLowerCase() !== 'input') {
switch(e.keyCode) {
case 39:
e.preventDefault();
alert("Arrow Key");
break;
case 37:
e.preventDefault();
alert("Arrow Key");
}
}
});
e.target
- это элемент, из которого произошло событие.В качестве альтернативы вы можете использовать API делегирования событий jQuery:
$(document).delegate(':not(input)', 'keydown', function(e) {
switch(e.keyCode) {
case 39:
e.preventDefault();
alert("Arrow Key");
break;
case 37:
e.preventDefault();
alert("Arrow Key");
}
});
Редактировать Обновлен мой ответ, чтобы выполнять проверки "не является вводом", а не "является входом".