Подтвердить что ты не робот

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.

4b9b3361

Ответ 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.