2013-01-24 14 views
0

可能重複:
Javascript KeyCode vs CharCode = Utter Confusion的Javascript使用String.charCodeAt(指數)和鍵碼

是什麼的String.charCodeAt(index)返回值和JavaScript鍵碼之間的區別?有沒有辦法在兩者之間進行翻譯?

例如:

console.log('.'.charCodeAt(0)); // prints 46 on Mac/Chrome 

但鍵代碼 ''是190.

+2

首先是在ASCII表的位置,第二個是一個鍵盤ķ ey代碼值。 – VisioN

+0

我不會說這是重複的,因爲鏈接的問題沒有詢問如何在兩者之間進行翻譯。 –

+0

更具體地說,如果我有一個字符,我如何在任何給定的瀏覽器中獲取其密鑰? –

回答

2

string.charCodeAt(index)用於返回指定位置字符串字符的ascii值。

keyCode是被按下的鍵盤鍵值的瀏覽器實現。不幸的是,它在所有瀏覽器中都沒有標準化。

編輯:

String.fromCharCode(unicodeValue);

這將一個Unicode值轉換如鍵代碼爲ASCII值。請注意,並非所有keyCode值都將轉換爲適當的ascii值(因爲不存在),例如{delete,up,down,left,right,home,insert,page up,page down}

例如:按下Delete鍵將返回一個46的keyCode,如果你這樣做alert(String.fromCharCode(46));你會看到它輸出一個句點,因爲46是一個句點的ascii值。

+0

是否有一個函數可以從keyCode轉換爲charCode,反之亦然? –

+0

jQuery已經實現了一個名爲'event.which'的keyCode版本,它將其添加到回調方法的事件對象中。它規範化這些keyCode,以便它們在jQuery支持的所有瀏覽器和版本中保持一致。這是難以完成的部分...然後你只需要編寫映射到正確的ascii值的映射函數。 –

+0

關於'event.which的api文檔http://api.jquery.com/event.which/ –

1

不同的onkeydown和的onkeyup的onkeypress事件不INFACT返回charCode屬性,它可以轉化爲它的字符表示使用String.fromCharCode

input.onkeypress = function(e) { 
    var char = String.fromCharCode(e.charCode); 
} 

還檢查了這個鏈接,一些好的研究關於在不同瀏覽器的鍵碼/ charCodes &平臺

http://unixpapa.com/js/key.html