javascript中keyCode與charCode屬性

好記性不如爛筆頭啊,最近總是忘記這兩個屬性的區別。想了想,從別人博客上轉一遍過來吧,時常看下

鍵盤事件擁有兩個屬性,keyCode和CharCode,他們之間有一些不一樣之處。keyCode表示用戶按下鍵的實際的編碼,而charCode是指用戶按下字符的編碼。
IE下
keyCode:對於keypress事件,表示按下按鍵的Unicode字符;對於keydown/keyup 事件,表示按下按鍵的數字代碼。無charCode屬性。
DOM標準下
keyCode:表示按下按鍵的數字代碼。
charCode:按下按鍵的Unicode字符。

當我按下“a”鍵(注意是小寫的字母)時,
在火狐中會得到
keydown:keyCode is 65  charCode is 0
keypress:keyCode is 0   charCode is 97
keyup:  keyCode is 65  charCode is 0
在谷歌中會得到
keydown:keyCode is 65  charCode is 0
keypress:keyCode is 97  charCode is 97
keyup:  keyCode is 65  charCode is 0
在IE中會得到
keydown:keyCode is 65  charCode is undefined
keypress:keyCode is 97  charCode is undefined
keyup:  keyCode is 65  charCode is undefined
而當我按下shift鍵時,
在火狐中會得到
keydown:keyCode is 16  charCode is 0
keyup:  keyCode is 16   charCode is 0
不會得到任何的charCode值,因爲按shift並沒輸入任何的字符,而且也不會觸發keypress事件。
在谷歌中會得到
keydown:keyCode is 16  charCode is 0
keyup:  keyCode is 16   charCode is 0
在IE中會得到
keydown:keyCode is 16  charCode is undefined
keyup:  keyCode is 16   charCode is undefined
小結:
1.在keydown事件裏面,事件包含了keyCode – 用戶按下的按鍵的物理編碼。
2.在keypress裏,keyCode包含了字符編碼,即表示字符的ASCII碼。這樣的形式適用於所有的瀏覽器 – 除了火狐,它在keypress事件中的keyCode返回值爲0。
如果你想獲取用戶實際敲擊的按鈕,用keydown事件來獲取事件對象,並獲取keyCode值,這在所有瀏覽器都行的通。另一方面,如果你想獲取用戶輸入的字符,那麼就使用keypress來獲取,然後獲取charCode(火狐和safari)或是keyCode(其他瀏覽器)。


原文轉自:http://blog.sina.com.cn/s/blog_65c2ec5e0101blj6.html

發佈了24 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章