Ответ 1
Моя догадка заключается в том, что когда вы нажимаете клавишу вкладки, ваш вход в форму теряет фокус, прежде чем произойдет активация клавиатуры. Попробуйте изменить привязку к телу, например:
$('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;
}
});
Один из этих двух должен работать... если это тело, вы можете прикрепить обработчик keydown на теле, а затем, если он на вкладке, найдите поле с фокусом (я думаю, что функция .hasFocus()?), и если это тот, который вы хотите, продолжите и верните false. В противном случае пусть браузер сделает свое дело.
Если вы хотите обновить поле с символом табуляции, попробуйте это в своем обратном вызове:
var theVal = $(this).val();
theVal = theVal + ' ';
$(this).val(theVal);
Не проверял, но должен работать. Вы можете также добавить 3 или 4 пробела вместо символа табуляции, если это дает вам проблемы.