18

如果使用SHIFT通过键盘输入字符,则keydownorkeyup事件只能跟踪keyCodeofSHIFT,即 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实际打印的字符???

4

3 回答 3

24

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

看看这个小提琴

当您按下时,Shift您可以看到它的 keyCode 和shiftKeyproperty true。同时按下任意按钮,即Shift+A和控制台输出:

65

这又是AshiftKey属性的代码。

于 2013-09-14T17:25:08.053 回答
12

得到了解决方案

我不得不使用视为按键但结果字符的onKeyPress事件。 SHIFT

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

句法:

onkeypress='alert(event.keyCode)';

现在如果我按SHIFT+A它会提示 keyCodeA即 65。

于 2013-09-16T07:52:17.920 回答
1

作为替代解决方案,您可以创建一个新的 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

于 2020-12-15T07:52:12.353 回答