JavaScript 练手小技巧:键盘事件

这篇具有很好参考价值的文章主要介绍了JavaScript 练手小技巧:键盘事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

键盘事件应该是鼠标事件之外,使用频率最高的 JS 事件了吧?

一般用于全局或者表单

键盘事件由用户击打键盘触发,主要有keydownkeypresskeyup三个事件。

  • keydown:按下键盘时触发。Ctrl、Shift、Alt 等和其它按键组合时,组合键的事件监听通常要使用 keydown

  • keypress:按下有值的键时触发(即只支持字符键、空白键、enter,如字母,数字,+、=等),即按下 Ctrl、Alt、Shift、Meta 这样无值的键,这个事件不会触发。对于有值的键,按下时先触发keydown事件,再触发这个事件。

  • keyup:松开键盘时触发该事件。

如果用户一直按键不松开,就会连续触发键盘事件,触发的顺序如下。

  1. keydown

  2. keypress

  3. keydown

  4. keypress

  5. ...(重复以上过程)

  6. keyup

document.addEventListener("keydown",function (event) {
    console.info("keydown");
});
document.addEventListener("keypress",function (event) {
    console.info("keypress");
});
document.addEventListener("keyup",function (event) {
    console.info("keyup");
});

JavaScript 练手小技巧:键盘事件

因此,在按下某个键要进行操作的时候,我们更推荐用 keyup,它只会触发一次,防止键盘事件多次触发。

1. 获取按键

如何知道按下什么键?

 (1)KeyboardEvent.code

KeyboardEvent.code 属性表示键盘上的物理键(与按键生成的字符相对)。

document.addEventListener("keydown",function (event) {
    console.info("keydown", event.code);
});

JavaScript 练手小技巧:键盘事件

可以利用 if 语句判断用户按下了某个键。

document.addEventListener("keydown",function (event) {
    if( event.code == "KeyA"){
        console.info("You press key A");
    }
});

下面是一些常用键的字符串形式,其它键请查看 MDN 文档

  • 字母键A - z:返回KeyA - KeyZ不区分大小写

  • 方向键:返回ArrowDownArrowUpArrowLeftArrowRight

  • Alt 键:返回 AltLeftAltRight

  • Shift 键:返回ShiftLeftShiftRight

  • Ctrl 键:返回ControlLeftControlRight

  • 数字键0 - 9:返回digit0 - digit9

  • 小键盘数字键0-9: Numpad1 - Numpad9

  • 功能键F1 - F12:返回 F1 - F12

(2)KeyboardEvent.key

虽然 KeyboardEvent.code 可以判断用户按下某个键,但是如果用户使用的不是物理键盘,而是虚拟键盘或辅助功能设备,可能会出现兼容性问题,并且判断失误。

此时,要确定哪个字符与键事件对应,请改用 KeyboardEvent.key 属性。

KeyboardEvent.key 表示按下的是哪个字符(区分大小写

  • 如果按下的键代表可打印字符,则返回这个字符。可以区分大小写

  • 如果按下的键代表不可打印的特殊字符,则返回预定义的键值,比如 Backspace,Tab,Enter,Shift,Control,Alt,CapsLock,Esc,Spacebar,PageUp,PageDown,End,Home,Left,Right,Up,Down,PrintScreen,Insert,Del,Win,F1~F12,NumLock,Scroll 等。不区分左右 shift 等

  • 如果同时按下一个控制键和一个符号键,则返回符号键的键名。比如,按下 Ctrl + a,则返回a;按下 Shift + a,则返回大写的A

  • 如果无法识别键名,返回字符串Unidentified

document.addEventListener("keydown",function (event) {
    console.info( event.key );
});

JavaScript 练手小技巧:键盘事件

(3)注意事项

  • 字母按键判断推荐 KeyboardEvent.code ,其它字符按键推荐使用 KeyboardEvent.key

code 获取字母键盘,不需要判断大小写;key 获取 enter 键,不用在意是主 enter,还是小键盘的enter。

可以从以下代码的实操,感受 key 和 code 的差异。

document.addEventListener("keydown",function (event) {
    console.info( event.key ,"---", event.code );
});

也可以通过网址:JavaScript Key Code Event Tool | Toptal®,检测 code 和 key 的差异。

  • 特殊的功能键 ctrl、shift、alt、win 键的判断

虽然通过 key 或者 code 可以判断出这些功能键是否按下,但是考虑到它们经常做组合键使用,因此这几个特殊的按键,可以直接通过 event.属性 获取到,它们是只读的 bool 值,表示是否按下了某个按键。

KeyboardEvent.altKey: 是否按下 AltOption 键。

KeyboardEvent.ctrlKey:是否按下 Ctrl 键。

KeyboardEvent.metaKey:是否按下 ⌘ Command 键。

KeyboardEvent.shiftKey:是否按下 Shift 键。

组合键用 keydown 事件,它们和其它按键组合时,组合键的事件监听通常要使用 keydown 事件,keypresskeyup 监听不到。

如,判断是否按下了 ctrl + c,并禁止用户复制网页内容。

window.addEventListener("keydown", function (event) {
    if(event.ctrlKey && event.code=="KeyC"){
        console.info("你按了 ctrl + c,本页内容禁止复制。");
    }
});
  • PrintScreen 需要使用 keyup 事件监听

屏幕上的截屏键,即 PrintScreen,它是一个系统的截屏快捷键,用于截取整个屏幕到“剪贴板”(clipboard),按下截屏后,直接粘贴到某个位置即可。

PrintScreen 按键的监听需要使用keyup 事件,其他事件 keypresskeydown 都无法监听到。

window.addEventListener("keyup", function (event) {
    if( event.key === "PrintScreen"){
        console.info("按下了截屏键");
    }else{
        console.info("其它键");
    }
});
  • 浏览器中某些按键的默认操作无法被阻止

如,ctrl + p 组合的打印页面操作;截屏 PrintScreen 操作。

  • KeyboardEvent.keyCode 官方已经不推荐使用,但是浏览器仍然支持。虽然可用,但是已经不推荐。这里不提。

2. 按键区域

KeyboardEvent.location属性返回一个整数,表示按下的键处在键盘的哪一个区域。它可能取以下值。

  • 0:处在键盘的主区域,或者无法判断处于哪一个区域。

  • 1:处在键盘的左侧,只适用那些有两个位置的键(比如 Ctrl 和 Shift 键)。

  • 2:处在键盘的右侧,只适用那些有两个位置的键(比如 Ctrl 和 Shift 键)。

  • 3:处在数字小键盘。

3. 是否激活指定的功能键

KeyboardEvent.getModifierState()方法返回一个布尔值,表示是否按下或激活指定的功能键。

可以通过此方法来判断键盘上对应功能键是否被激活,如是否按下了大小写锁定键,是否打开了数字键盘等。

它的常用参数如下。

  • Alt:Alt 键

  • CapsLock:大写锁定键

  • Control:Ctrl 键

  • Meta:Meta 键

  • NumLock:数字键盘开关键

  • Shift:Shift 键

window.addEventListener("keydown", function (event) {
    if (
        event.getModifierState('Control') +
        event.getModifierState('Alt') +
        event.getModifierState('Meta') > 1
    ) {
       console.info("yes");
    }
});

上面代码表示,只要ControlAltMeta里面,同时按下任意两个或两个以上的键就输出“yes”。

4. 跟表单结合

例:在标签里重复文本框里的内容。

<input type="text" id="myInput">
<div id="box"></div>
<script>
    let input = document.getElementById("myInput");
    let box = document.getElementById("box");
    input.addEventListener("keyup", function (event) {
        box.innerHTML = this.value ;
    });
</script>

JavaScript 练手小技巧:键盘事件文章来源地址https://www.toymoban.com/news/detail-487589.html

到了这里,关于JavaScript 练手小技巧:键盘事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript:onkeydown-键盘上的键被按下时触发事件

    案例: 使用div布局以及键盘点击事件的一个实例运用,实现一个点击键盘上下左右键使div布局移动 示例: 第一步: 写两个HTML-div布局,并定义id ​ html     head         meta charset=\\\"utf-8\\\"         title/title     /head     body         div id=\\\"content\\\"             div id=\\\"mov

    2024年02月16日
    浏览(37)
  • (自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

     写自己的开发语言时,很多人都会拿JSON当第一个练习对象 开源net json FJSON 解析工具 https://dbrwe.blog.csdn.net/article/details/107611540?spm=1001.2014.3001.5502 以上是JSON的简化产生式表示形式。其中, json 是最顶层的规则,可以是一个对象或一个数组。 object 表示一个对象,由一对大括号

    2024年02月10日
    浏览(53)
  • js获取键盘按键事件、判断键盘按键事件、调用键盘按键事件

    第一:获取键盘按键事件 第二:判断键盘按键事件 第三:调用键盘按键事件

    2024年02月11日
    浏览(54)
  • Qt 事件 < 二 >鼠标键盘事件

    Qt 是一个流行的 C++ 框架,用于构建跨平台的图形用户界面应用程序。在 Qt 中,处理键盘事件和鼠标事件是常见的任务,因为用户输入在交互式应用程序中至关重要。下面是关于 Qt 键盘事件和鼠标事件的学习总结: 键盘事件 (QKeyEvent)使用入门: 事件处理函数: 键盘事件通过

    2024年01月18日
    浏览(42)
  • JS 鼠标事件与键盘事件

    一、鼠标事件         onclick        鼠标点击左键触发         onmouseover    鼠标经过触发         onmouseout     鼠标离开触发         onfocus        获得鼠标焦点触发         onblur         失去鼠标焦点触发         onmousemove    鼠标移动出发    

    2024年02月09日
    浏览(44)
  • python 监听键盘事件和鼠标事件

    键盘监听: python有一个很强大的键盘监听库,那就是 keyboard 。他的父类库 pynput 可以实现鼠标监听 可以自行下载 pip install keyboard | pip install pynput 代码参考

    2024年02月13日
    浏览(42)
  • 【键盘事件 JS】关于keyCode事件

    提示:在实现一个delete删除键的时,发现keyCode编码为64,但在其他电脑上发现没有监听到,打印出的keyCode为8,查阅资料发现 用户可能会自定义键盘,导致keyCode不准 提示:keyCode码不统一,导致不同的键盘出现了bug,以删除按键为例 参考链接:告别JS keyCode « 张鑫旭-鑫空间-鑫

    2024年02月16日
    浏览(34)
  • Vue鼠标点击事件和键盘事件

    目录 Vue中的鼠标点击事件修饰符: vue的@click.prevent vue的@click.stop vue的@click.capture vue的@click.once vue的@click.self vue的@click.passive  vue的键盘相应事件 @keydown - 按下键盘上的任意一个键时触发的事件。 @keyup - 松开键盘上的任意一个键时触发的事件。 @keypress - 当按下字符键时触发的

    2024年02月06日
    浏览(94)
  • Vue中事件修饰符与键盘事件

    目录 事件修饰符 prevent:阻止默认事件 stop:阻止事件冒泡 once:事件只触发一次 capture:使用事件的捕获模式  self:与当前事件一致时触发 passive:事件的默认行为立即执行   键盘事件 Vue中的事件修饰符: 1、prevent:阻止默认事件; 2、stop:阻止事件冒泡; 3、once:事件只触发一

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包