2010-06-16 55 views
1

此JavaScript代碼在OSX 10.5.8上的Firefox 3.6.3上的「Shift + /」組合鍵總是返回零。但它返回期望值191在Chrome上OSX/MAC在Mac OSX的Firefox中未使用JavaScript檢測到Shift + /組合鍵

GetKeyCode = function(e) { 
     var code = 0; 
     if (!e) { 
      e = window.event 
     } 
     if (e.keyCode) { 
      code = e.keyCode; 
     } else if (e.which) { 
      code = e.which; 
     } 
     return code; 
    }; 

GetKeyCode正從jQuery的的keydown事件。

jQuery(document).keydown(function(e) { ...... }); 

有沒有錯誤,或者我在這裏丟失了一些非常簡單的東西? 請幫忙

在此先感謝。 -Parimal Das

+0

如何'GetKeyCode'附?哪個事件在哪個元素上?有關鍵盤事件的更多信息,請參閱http://unixpapa.com/js/key.html。 – 2010-06-16 13:40:20

+0

它是一個keydown事件。我也更新了這篇文章。 謝謝。 – 2010-06-16 13:51:52

+0

你爲什麼做這個社區Wiki? – 2010-06-16 14:23:20

回答

0

如果它來自jQuery,那麼您應該只能使用e.which。實際上,尋找e.keyCode可能會導致此問題,因爲如果Shift鍵已關閉,則不會填充它。請參閱the Mozilla documentation

+0

我認爲你把'keyCode'與'charCode'混淆了:''charCode'從未在keydown和keyup事件中設置,在這種情況下''keyCode'被設置。再看[event.keyCode](https://developer.mozilla.org/en/DOM/event.keyCode):''keyCode'總是在keydown和keyup事件中設置的。在這些情況下,'charCode'是從未設置。「 – 2010-06-16 17:30:43

+0

但是你說得對jQuery規範化'event.which':「雖然瀏覽器使用不同的屬性來存儲這些信息,但jQuery規範化了'.which'屬性,所以我們可以可靠地使用它來檢索關鍵代碼。鍵盤上的按鍵,包括特殊按鍵的代碼,例如箭頭,爲了捕捉實際的文本輸入,'.keypress()'可能是更好的選擇 – 2010-06-16 17:35:53

+0

實際上,除了某些邊緣情況,例如修改鍵,我會避免keydown/keyup如果可以,堅持按鍵。 – Neil 2011-01-20 21:07:19