18

何らかの理由で、「SHIFT + TAB」の組み合わせをキャプチャできません。最新のjQueryを使用しています。

他の ajax/javascript などを使用しても同じ結果になります。

これは、私が現在理解しているように機能するはずの簡単な例です...

event.which または event.KeyCode は常に「未定義」です。「SHIFT+TAB」または後方キーボード トラバーサルを含むシナリオでは、従来は Windows ベースのアプリ/Web などに固有の shiftKey のみが存在します...

    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 つの項目のようです。

4

3 に答える 3

32

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();
});
于 2011-04-18T19:25:03.017 に答える
2

ボタンのonkeydownイベントに接続する関数を作成しました。onkeypressはタブキーの押下をキャプチャしないため、onkeydownを使用しました

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;
              }
       }

私はこのアプローチを採用して、2つの特定の問題に対処しました。

  1. onkeypressはタブキーの押下をキャプチャしません
  2. Shift-Tabをクリックすると、Shiftキーを押すと機能がトリガーされるため、ShiftKey修飾子のチェックをネストしました。
于 2012-03-15T19:48:48.027 に答える
0

keypress イベント内で同じコードを使用します。タブは、キープレスとキーアップの間で要素を変更します。ここでは、event.key = tab および event.shiftKey = true を取得します。

于 2015-08-01T09:59:32.383 に答える