Я догадываюсь, что когда вы нажимаете клавишу табуляции, ввод вашей формы теряет фокус, прежде чем произойдет нажатие клавиши. Попробуйте изменить привязку к телу, например так:
$('body').keyup(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
alert('Tab pressed');
}
});
Затем, если это работает (это работает для меня), попробуйте изменить привязку вместо keyDown и вернуть false. Таким образом, вы можете реализовать свое собственное поведение.
$('.yourSelector').keydown(function(e) {
console.log('keyup called');
var code = e.keyCode || e.which;
if (code == '9') {
alert('Tab pressed');
return false;
}
});
Один из этих двух должен работать ... если это тело, вы можете прикрепить обработчик нажатия клавиш к телу, затем, если это вкладка, найти поле с фокусом (я думаю, что есть функция .hasFocus ()?), И если это тот, который вы хотите, продолжить и вернуть ложь. В противном случае, пусть браузер сделает свое дело.
Если вы хотите обновить поле с помощью символа табуляции, попробуйте это в вашем обратном вызове:
var theVal = $(this).val();
theVal = theVal + ' ';
$(this).val(theVal);
Не проверял, но это должно работать. Вы также можете добавить 3 или 4 пробела вместо символа табуляции, если это доставляет вам проблемы.