当前位置: 代码网 > it编程>编程语言>Javascript > js键盘事件keydown事件、防止重复触发以及组合键的配合使用

js键盘事件keydown事件、防止重复触发以及组合键的配合使用

2024年05月28日 Javascript 我要评论
js键盘事件keydown事件,防止重复触发键盘事件类型主要有三种:keydown、keypress(不建议使用,部分浏览器已放弃)和keyup。添加普通键盘keydown事件// 监听键盘按下事件

js键盘事件keydown事件,防止重复触发

键盘事件类型主要有三种: keydown 、keypress(不建议使用,部分浏览器已放弃)和 keyup 。

添加普通键盘keydown事件

// 监听键盘按下事件
  document.addeventlistener('keydown', function(event) {
    // 输出按下的键的键码
    console.log('key pressed:', event.key, 'key code:', event.keycode);
  });

但是此事件会如果不释放按键就会重复触发,如何阻止呢?

阻止keydown事件重复触发

①使用一个标志变量来跟踪按键的状态

let keydownflag = false;

  // 监听键盘按下事件
  document.addeventlistener('keydown', function(event) {
    if (!keydownflag) {
      keydownflag = true;
      console.log('key pressed:', event.key, 'key code:', event.keycode);
    }
  });

  // 监听键盘释放事件
  document.addeventlistener('keyup', function() {
    keydownflag = false;
  });

②通过事件自带的属性判断

repeat 属性可以用于判断键盘事件是否是由按键保持按下而持续触发的。

// 监听键盘按下事件
  document.addeventlistener('keydown', function(event) {
    if (!event.repeat) {
      console.log('key pressed:', event.key, 'key code:', event.keycode);
    }

在这个例子中,event.repeat 属性被用于检查是否是由按键保持按下而触发的事件。如果 event.repeat 为 false,则表示这是一个新的按键事件,而不是持续触发的事件。

组件键的配合使用

组件键一般就是就是通过keydown事件来触发

document.onkeydown = function (oevent) {
    console.log(oevent);
}

可以看到event对象中返回很多信息,其中keycode属性中包含一份代码,是键盘上对应的ascii码,type是触发事件的类型等等…

这里我们有几个属性是我们用的到的,就是altkey属性和ctrlkey属性还有shiftkey。它们代表着键盘上的alt、ctrl、shift键对于事件触发的判断。当事件由这几个键触发时,它们的值会变成true.

那我可以通过上边的内容结合这几个属性来监听键盘事件。

  • 比如要监听ctrl + s的组合事件
document.onkeydown = functionb(oevent) {
  var oevent = oevent || window.oevent; 
  //获取键盘的keycode值
  var nkeycode = oevent.keycode || oevent.which || oevent.charcode;
  //获取ctrl 键对应的事件属性
  var bctrlkeycode = oevent.ctrlkey || oevent.metakey;
   if( oevent.nkeycode == 83 && bctrlkeycode  ) {
      alert('save');
       //dosomething...
   }
}
  • 比如要监听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键对应pc电脑的ctrl键,command键对应是win键,

附:判断按的按键是否为ctrl、shift、alt

console.log(ev.ctrlkey);
console.log(ev.shiftkey);
console.log(ev.altkey);

总结

到此这篇关于js键盘事件keydown事件、防止重复触发以及组合键的配合使用的文章就介绍到这了,更多相关js keydown事件防止重复触发内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com