如何确定按下了哪个“+”键?

4

我有一个请求,希望在按下数字键盘侧的加号键时,将其复制为Tab键。

似乎在需要Shift键的字母上方的加号键和数字键盘配置中的加号键都具有数字43。

如何确定按下了哪个+键?

更新: 我使用了这个例子 "https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_event_key_keycode" ,如下面所指出的那样,这不是正确的方法。

2个回答

6

每个按键的键码都是不同的。数字小键盘= 107,顶部行= 187

您可以使用此功能在自己的键盘上进行验证:

$('#text').on('keydown', function (e) {
  $('label').text(e.which);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="text" />
<label></label>

在现代浏览器(IE9+)中,您还可以使用key属性来检测输出了哪个键,而无需担心用于生成它的确切键:

$('#text').on('keydown', function (e) {
  if (e.key == '+')
    console.log('You typed a plus symbol!');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="text" />
<label></label>


好的,谢谢。嗯,我正在使用这个版本: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_event_key_keycode 它们显示出来是43。 - eaglei22
3
不要使用W3Schools - 他们的文章经常过时,有时甚至是错误的。MDN是一个更好的资源。 - Rory McCrossan
啊,看起来那就是我的问题了!谢谢你帮我解决了困境。 - eaglei22
1
很高兴能够帮忙。另外请注意,我编辑了另一种方法,可以不考虑任何 keyCode 的异常情况。 - Rory McCrossan

1

这两个按键产生两个不同的按键代码。您可以测试正确的按键代码:

$(document).on("keydown", function(evt){
  switch (evt.keyCode){
    case 107:
      console.log("You pressed '+' on the number pad");
      break;
    case 187:
      console.log("You pressed SHIFT '+' on main keyboard");
      break;    
  }     
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Just click once over here to give the "document" focus and then press the + key(s)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接