js_鍵盤與輸入事件
阿新 • • 發佈:2020-12-31
目錄
按下的是非字元鍵時
- 僅觸發
keydown
與keyup
事件,通過event.keyCode
可以查詢按下的是什麼鍵。 - 按下鍵按住不放會重複觸發
keydown
事件,出於效能考慮有必要進行防抖處理或者進行其它限制。
按下的是字元鍵時
- 在
input
輸入框中按下字元鍵,觸發keydown
,keypress
,textInput
,keyup
事件。 - 在
document
按下字元鍵,觸發keydown
,keypress
,keyup
事件。 keypress
在使用者按下某個字元鍵時觸發,無論這個字元是否顯示。通過charCode
屬性獲取按鍵字元對應的ASCII編碼,再通過String.fromCharCode()
textInput
事件。- 按下字元鍵不放會重複觸發
keydown
與keypress
。 textInput
事件只能在輸入框中觸發,通過data
屬性獲取輸入的字元。
使用中文輸入法時
- 在
document
中與英文輸入法無區別 - 在輸入框中,每次按鍵會觸發
keyup
事件兩次且兩次觸發的e.keyCode
不一致,其觸發順序為keydown
,keyup
,keyup
。 - 通過按鍵選中輸入法中的候選字元時,觸發順序為
keydown
,textInput
,keyup
,keyup
。 textInput
事件的data屬性返回的只是編輯區域內的文字。通過點選字元鍵1
選取某個漢字時,e.data
1
。