如果使用 SHIFT 如何获取字符代码

How to get keyCode of character if SHIFT is used?

本文关键字:获取 字符 代码 何获取 SHIFT 如果      更新时间:2023-09-26
如果使用 SHIFT 键

通过键盘输入字符,则 keydown keyup 事件只能跟踪 SHIFTkeyCode,即 16。

那么如何追踪实际打印的字符keyCode呢?

我正在使用以下代码-

onkeyup='alert(event.keyCode)';// Always shows a message 16(keyCode of SHIFT) irrespective of the actual character

onkeydown='alert(event.keyCode)';// Always shows a message 16(keyCode of SHIFT) irrespective of the actual character

那么如何打印实际字符keyCode???

可以看到传递的事件对象的属性shiftKey

看看这个小提琴

当您按 Shift 时,您可以看到它的键代码和shiftKey属性true .同时按下任意按钮,即 Shift+A 和控制台输出:

65

这是 A 的代码,再次shiftKey属性。

得到解决方案

我不得不使用onKeyPress事件,该事件不将SHIFT 视为按键,而是将结果字符视为。

因此,我可以使用onKeyPress事件获取实际结果字符的keyCode

语法:

onkeypress='alert(event.keyCode)';

现在,如果我按 SHIFT+A,它会提示 A 的键代码,即 65。

作为替代解决方案,您可以创建一个新的 keydown 事件侦听器,并创建一个将e.shiftKey保存为布尔值的 if 语句。如果它返回 true,则嵌套一个新的 if 语句e.which该语句将只为符号返回 true,而不为数字返回 true。

input.addEventListener('keydown', e => {
  if(e.shiftKey)
    if(e.which == 52){
      // will only return the value of dollar sign ($) not a number 4
    }
})

参考: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/shiftKey