更新時間:2022-03-17 來源:黑馬程序員 瀏覽量:
鍵盤事件是指用戶在使用鍵盤時觸發(fā)的事件。例如,用戶按Esc鍵關閉打開的狀態(tài)欄,按Enter鍵直接完成光標的上下切換等。下面列舉幾個常用的鍵盤事件,如表所示。
| 事件名稱 | 事件觸發(fā)時機 |
| keypress | 某個鍵盤按鍵被按下時觸發(fā)。不識別功能鍵,如Ctrl、Shit、箭頭等 |
| keydown | 某個鍵盤按鍵被按下時觸發(fā) |
| keyup | 某個鍵盤按鍵被松開時觸發(fā) |
需要注意的是,keypress事件保存的按鍵值是ASCⅡ碼,keydown和keyup事件保存的按鍵值是虛擬鍵碼,keydown和keypress如果按住不放的話,會重復觸發(fā)該對應事件。keyup和keydown事件不區(qū)分字母大小寫,而keypress區(qū)分字母大小寫。
在發(fā)生keydown和keypress事件時,event事件對象的keycode屬性會包含一個值,該值與鍵盤上的特定值對應。keycode的值與ASCⅡ碼對應的值相同,例如,keycode值為13表示Enter鍵,keycode值為9表示Tab鍵。讀者可參考MDN等手冊進行查看,此處不再詳細列舉。
鍵盤事件也有相應的鍵盤事件對象KeyBoardEvent,該對象是跟鍵盤事件相關的一系列信息的集合。根據(jù)鍵盤事件對象中的keyCode屬性可以得到相應的ASCIⅡ碼值,進而可以判斷用戶按下了哪個鍵。
為了讓大家更好地理解鍵盤事件的使用,下面我們通過案例的形式進行展示。檢測用戶是否按下了s鍵,如果按下s鍵,就把光標定位到搜索框里面,示例代碼如下:
<body>
<input type="text">
<script>
var search = document.querySelector ('input');
document.addEventListener('keyup', function (e) {
if (e.keyCode === 83) {
search.focus();
}
});
</script>
</body>上述代碼中,第5行代碼綁定了鼠標彈起事件,當輸入完畢后再進行檢測。第6~8行代碼使用鍵盤事件對象里面的keyCode判斷用戶按下的是否是s鍵,如果是,則讓搜索框獲取焦點,幫助用戶進行輸入。