1. 程式人生 > >keycode,charcode,which區別

keycode,charcode,which區別

引用:在標準瀏覽器下獲取鍵盤按鍵我們可以使用e.which,但是非標準下沒有這個屬性,所以大部分情況下用keyCode,但是這是存在相容性問題的。我們來看下他兩的區別:

onkeydown: e.keyCode  有值

onkeyup: e.keyCode 有值

onkeypress: e.keyCode 為0

 

onkeydown: e.charCode  為0

onkeyup: e.charCode 為0

onkeypress: e.charCode 有值

結論:charCode 返回onkeypress事件觸發鍵值的字母程式碼。

         keyCode 返回 onkeydown 或 onkeyup 事件的鍵的程式碼。

___________________________________________________________________________________________________

一 :不同瀏覽器和不同事件,會有不同的屬性值。上述結論並不絕對,還和瀏覽器及輸入法(主要是微軟中文輸入法)有關。

    1. event.key: 返回值為輸入的值,特殊鍵是各自的名字。(異常:當在非IE及微軟輸入法時,有實質輸入的鍵返回值為 “”Process“”,其他鍵不變)。

    2.keyCode,charCode,which:返回值為 keyCode 。在微軟中文輸入時,返回值為229.(而此時也無法阻止預設行為)

    保險做法是,無論哪種都做相容:code = event.keyCode || event.charCode;(同時判斷229特殊情況)

    3. String.fromCharCode(keyCode):將返回碼轉成返回內容,但是除了有實質內容的鍵,其他的鍵轉化結果有點亂。