2011-04-18 32 views
16

無論出於何種原因,我無法捕獲「SHIFT + TAB」組合。 我正在使用最新的jQuery。JavaScript無法捕獲「SHIFT + TAB」組合

同樣的結果,如果我使用其他Ajax/JavaScript的等

下面是一個簡單的例子,要工作,我目前的理解......

event.which或event.KeyCode總是「未定義」只有Shift鍵,存在於涉及方案‘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的應用程序。

+2

如果這個問題已經完成,你應該接受一個答案:) – Eli 2011-11-30 01:54:43

回答

30

如果您使用jQuery,這應該是代碼的工作方式。確保keyCode是小寫字母。此外,jQuery的正常化keyCodewhich

$(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

這並不總是工作,我的意思是,與鍵控。這是因爲,例如,我首先放開了換檔標籤。所以這將返回9和false,因爲tab被按下,但shift不是。如果你先放開標籤,那就沒關係。但隨着keydown它會起作用,導致你按Tab鍵並且已經按下shift。 – bokkie 2014-09-22 09:49:15

+0

不管我發佈'tab'的順序如何,這對我都不起作用。不知道爲什麼我的代碼無法識別'shift'鍵與'tab'聯合使用 – CIA 2015-06-10 18:30:17

+0

@CIA我認爲bokkie讓你瞭解他的答案。 但基本上onKeyUp會觸發兩次,每次按鍵一次(Shift和Tab)。事件處理程序默認不知道SHIFT在任何方面都是特殊的 - 它只是另一個關鍵。您必須檢查KeyDown或KeyPress上的事件,以便您可以在標籤註冊時檢查SHIFT。 – RoboBear 2017-01-05 18:58:45

0

我創建了我的有線功能直到我的按鈕的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事件不會捕捉tab鍵按下
  2. 當點擊移shift鍵會觸發函數,所以我嵌套了shiftkey修飾符檢查
0

在keypress事件中使用相同的代碼。 該選項卡更改按鍵和鍵盤之間的元素。 這裏我們得到event.key = tab和event.shiftKey = true。