JavaScript не может захватить комбинацию "SHIFT + TAB" - PullRequest
17 голосов
/ 18 апреля 2011

По какой-то причине я не могу захватить комбинацию «SHIFT + TAB».Я использую последнюю версию jQuery.

Тот же результат, если я использую другой ajax / javascript и т. Д.

Вот простой пример, который должен работать так, как я сейчас его понимаю ...

event.which или event.KeyCode всегда «неопределен», только shiftKey существует в сценарии, включающем «SHIFT + TAB» или обратный переход с клавиатуры, традиционно свойственный приложениям на основе Windows / сети или иным образом ...

    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.

Ответы [ 3 ]

32 голосов
/ 18 апреля 2011

Если вы используете 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();
});
1 голос
/ 15 марта 2012

Я создал функцию, которую я подключил к событию 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;
              }
       }

Я использовал этот подход для решения двух конкретных проблем:

  1. onkeypress не будет фиксировать нажатие клавиши табуляции
  2. При нажатии клавиши Shift нажатие клавиши Shift активирует функцию, поэтому мне нужно было проверить модификатор клавиши shift
0 голосов
/ 01 августа 2015

использовать тот же код внутри события нажатия клавиши.вкладка изменяет элемент между нажатием клавиши и нажатием клавиши.здесь мы получаем event.key = tab и event.shiftKey = true.

...