js鍵盤事件keydown事件、防止重復(fù)觸發(fā)以及組合鍵的配合使用
js鍵盤事件keydown事件,防止重復(fù)觸發(fā)
鍵盤事件類型主要有三種: keydown 、keypress(不建議使用,部分瀏覽器已放棄)和 keyup 。
添加普通鍵盤keydown事件
// 監(jiān)聽鍵盤按下事件
document.addEventListener('keydown', function(event) {
// 輸出按下的鍵的鍵碼
console.log('Key pressed:', event.key, 'Key code:', event.keyCode);
});
但是此事件會如果不釋放按鍵就會重復(fù)觸發(fā),如何阻止呢?
阻止keydown事件重復(fù)觸發(fā)
①使用一個標(biāo)志變量來跟蹤按鍵的狀態(tài)
let keyDownFlag = false;
// 監(jiān)聽鍵盤按下事件
document.addEventListener('keydown', function(event) {
if (!keyDownFlag) {
keyDownFlag = true;
console.log('Key pressed:', event.key, 'Key code:', event.keyCode);
}
});
// 監(jiān)聽鍵盤釋放事件
document.addEventListener('keyup', function() {
keyDownFlag = false;
});
②通過事件自帶的屬性判斷
repeat 屬性可以用于判斷鍵盤事件是否是由按鍵保持按下而持續(xù)觸發(fā)的。
// 監(jiān)聽鍵盤按下事件
document.addEventListener('keydown', function(event) {
if (!event.repeat) {
console.log('Key pressed:', event.key, 'Key code:', event.keyCode);
}
在這個例子中,event.repeat 屬性被用于檢查是否是由按鍵保持按下而觸發(fā)的事件。如果 event.repeat 為 false,則表示這是一個新的按鍵事件,而不是持續(xù)觸發(fā)的事件。
組件鍵的配合使用
組件鍵一般就是就是通過keydown事件來觸發(fā)
document.onkeydown = function (oEvent) {
console.log(oEvent);
}

可以看到event對象中返回很多信息,其中keycode屬性中包含一份代碼,是鍵盤上對應(yīng)的ASCII碼,type是觸發(fā)事件的類型等等…
這里我們有幾個屬性是我們用的到的,就是altkey屬性和ctrlkey屬性還有shiftkey。它們代表著鍵盤上的alt、ctrl、shift鍵對于事件觸發(fā)的判斷。當(dāng)事件由這幾個鍵觸發(fā)時,它們的值會變成true.
那我可以通過上邊的內(nèi)容結(jié)合這幾個屬性來監(jiān)聽鍵盤事件。
- 比如要監(jiān)聽ctrl + s的組合事件
document.onkeydown = functionb(oEvent) {
var oEvent = oEvent || window.oEvent;
//獲取鍵盤的keyCode值
var nKeyCode = oEvent.keyCode || oEvent.which || oEvent.charCode;
//獲取ctrl 鍵對應(yīng)的事件屬性
var bCtrlKeyCode = oEvent.ctrlKey || oEvent.metaKey;
if( oEvent.nKeyCode == 83 && bCtrlKeyCode ) {
alert('save');
//doSomeThing...
}
}
- 比如要監(jiān)聽Alt+ q的組合事件
document.onkeydown = functionb(e) {
if(e.altKey && e.keyCode == 81){
if(e.repeat){
return
}
//todo somethink
}
}
雖然mac電腦操作有別于普通win電腦,但并不代表沒有alt鍵。 在mac電腦找到alt鍵并不難,鍵盤左下角的option鍵其實就是蘋果的alt鍵,旁邊的control鍵對應(yīng)pc電腦的ctrl鍵,command鍵對應(yīng)是win鍵,
附:判斷按的按鍵是否為ctrl、shift、alt
console.log(ev.ctrlKey); console.log(ev.shiftKey); console.log(ev.altKey);
總結(jié)
到此這篇關(guān)于js鍵盤事件keydown事件、防止重復(fù)觸發(fā)以及組合鍵的配合使用的文章就介紹到這了,更多相關(guān)js keydown事件防止重復(fù)觸發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
小程序自定義單頁面、全局導(dǎo)航欄的實現(xiàn)代碼
這篇文章主要介紹了小程序自定義單頁面、全局導(dǎo)航欄的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
Textarea根據(jù)內(nèi)容自適應(yīng)高度
使用JAVASCRIPT控制Textarea內(nèi)容自適應(yīng)高度,實施起來很簡單,很平滑。2013-10-10
JS字符串轉(zhuǎn)換為數(shù)組的4 個方法示例小結(jié)
這篇文章主要介紹了JS字符串轉(zhuǎn)換為數(shù)組的4 個方法示例小結(jié),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-12-12
微信小程序web-view環(huán)境下H5跳轉(zhuǎn)小程序頁面方法實例代碼
微信小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗,下面這篇文章主要給大家介紹了關(guān)于微信小程序web-view環(huán)境下H5跳轉(zhuǎn)小程序頁面方法的相關(guān)資料,需要的朋友可以參考下2022-08-08

