2009-10-30 92 views
7

我正在使用keydown事件keydown事件上的鍵碼

我在哪裏得到鍵碼並將其轉換爲charcode。

但是我有一個問題,鍵盤在哪裏按2它給50,並作爲則charCode 2

當我在小鍵盤上按2它給人的鍵碼98,所以當我轉換則charCode a

回答

1

你會獲得字符代碼keypress事件
嘗試了這一點:http://www.w3.org/2002/09/tests/keys.html

他們使用下面的代碼轉換爲CHARAC之三:

var charCode = (evt.charCode) ? evt.charCode : evt.keyCode; 

this也可能是有幫助的鍵碼參考

12

這是發生becau如果您使用的是keyCode成員,例如,小寫字母'a'和大寫字母'A'具有相同的keyCode,因爲是相同的密鑰,但是不同的charCode,因爲結果字符不同。

要獲得中charCode,你應該使用keypress事件,如果有得到event.charCode成員,否則,你得到這對於IE瀏覽器,在按鍵事件有正確信息的event.keyCode

給看看以下example

document.onkeypress = function (e) { 
    e = e || window.event; 
    var charCode = e.charCode || e.keyCode, 
     character = String.fromCharCode(charCode); 

    alert(character); 
}; 
+0

與此代碼: 當我輸入 「2」,我得到0則charCode; keyCode 50;字符2; 當我輸入Shift-2時,我得到了相同的結果,但在我的文本框中出現了「@」。 onkeypress事件似乎不知道你的Shift鍵是否關閉... – Michiel 2013-02-08 10:23:33

+0

@CMS非常豐富 – Oliver 2015-07-08 07:01:00