js_鍵盤與輸入事件


按下的是非字符鍵時

  • 僅觸發keydownkeyup事件,通過event.keyCode可以查詢按下的是什么鍵。
  • 按下鍵按住不放會重復觸發keydown事件,出於性能考慮有必要進行防抖處理或者進行其它限制。

按下的是字符鍵時

  • input輸入框中按下字符鍵,觸發keydown,keypress,textInput,keyup事件。
  • document按下字符鍵,觸發keydown,keypress,keyup事件。
  • keypress在用戶按下某個字符鍵時觸發,無論這個字符是否顯示。通過charCode屬性獲取按鍵字符對應的ASCII編碼,再通過String.fromCharCode()方法獲取輸入值。在DOM3事件中被廢棄,轉而推薦textInput事件。
  • 按下字符鍵不放會重復觸發keydownkeypress
  • textInput事件只能在輸入框中觸發,通過data屬性獲取輸入的字符。

使用中文輸入法時

  • document中與英文輸入法無區別

  • 在輸入框中,每次按鍵會觸發keyup事件兩次且兩次觸發的e.keyCode不一致,其觸發順序為keydown,keyup,keyup

  • 通過按鍵選中輸入法中的候選字符時,觸發順序為keydown,textInput,keyup,keyup

  • textInput事件的data屬性返回的只是編輯區域內的文本。通過點擊字符鍵1選取某個漢字時,e.data返回的是具體的漢字文本而不是字符1

  • 測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM