JavaScript не может захватить комбинацию "SHIFT + TAB"
По какой-то причине я не могу захватить комбинацию "SHIFT + TAB".
Я использую последний jQuery.
Тот же результат, если я использую другой ajax/javascript и т.д.
Вот простой пример, который должен работать, поскольку я в настоящее время его понимаю...
event.which или event.KeyCode всегда "undefined", только shiftKey существует в сценарии, включающем "SHIFT + TAB" или обратное перемещение клавиатуры, традиционно присущее приложениям/веб-приложениям на основе окон или другим...
function ShiftTab()
{
debugger;
if(event.KeyCode == 9 && event.shiftKey) // neither this line nor the following work
// if (event.which == 9 && event.shiftKey) // shift + tab, traverse backwards, using keyboard
{
return true;
}
else
{
return false;
}
}
похоже, это еще один элемент, связанный с порядком табуляции, который больше не работает, поскольку он традиционно работал в приложениях на базе Microsoft.Net WinForm/WebForm.
Ответы
Ответ 1
Если вы используете jQuery, это должно быть, как работает код. Убедитесь, что keyCode
имеет нижний регистр. Кроме того, jQuery нормализует keyCode
в which
:
$(document).keyup(function (e) {
if (e.which === 9 && e.shiftKey) {
ShiftTab();
}
});
Если вы используете краткий JavaScript:
$(document).keyup(function (e) {
e.which === 9 && e.shiftKey && ShiftTab();
});
jQuery 1.7+ on
синтаксис:
$(document).on('keyup', function (e) {
e.which === 9 && e.shiftKey && ShiftTab();
});
Ответ 2
Я создал функцию, которую я подключил к своей кнопке onkeydown. Я использовал onkeydown, потому что onkeypress не захватил мою клавишу вкладок, нажав
function ShiftTab(evt) {
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode; // for trans-browser compatibility
if (charCode === 9) {
if (e.shiftKey) {
$('#controlName').focus();
return false;
} else {
return true;
}
}
Я использовал этот подход для решения двух конкретных проблем:
- onkeypress не будет захватывать нажатие клавиши вкладок
- При нажатии на shift-tab нажатие клавиши shift вызывает функцию, поэтому я установил проверку модификатора shiftkey
Ответ 3
используйте тот же код внутри события нажатия клавиши.
вкладка изменяет элемент между нажатиями клавиш и клавиш.
здесь мы получаем event.key = tab и event.shiftKey = true.