好記性不如爛筆頭啊,最近總是忘記這兩個屬性的區別。想了想,從別人博客上轉一遍過來吧,時常看下
鍵盤事件擁有兩個屬性,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