jQuery - 键盘键码 - 有什么问题?

时间:2017-10-12 03:29:00

标签: javascript jquery javascript-events

我正在尝试获取访问者何时左右使用键的响应

<script>
  $(document).keypress(function(event) {
    key = String.fromCharCode(event.which)
    if(key == '37' || key == '39') {
      $('main').html('You pressed : ' + key)
      event.preventDefault()
    }
  });
</script>

它不起作用。什么工作是行

if(key == 'a')

我使用此表来查找代码https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

是因为jQuery有不同的表吗?或者我也应该加载JavaScript?那么我该如何使用它们中的两个呢? (jQuery和JavaScript?)?

提前致谢

编辑:

我想我明白了

String.fromCharCode(event.which)

JavaScirpt无法读取字符串作为数字?我需要使用不同的功能吗?我是新手,你可以告诉我该怎么做吗?

2 个答案:

答案 0 :(得分:0)

我自己发现当我去实现这些“从事件中获取项目”时,一个简单的console.log(event)会产生奇迹。我先从:

开始
$('body').on('keypress', function(evt){
    console.log('Event: ', evt);
});

然后,按向右和向左箭头键,看看会发生什么。

首先,观察:我注意到您正在比较字符串'37',它与整数值37不同。前者是两个或四个字节(取决于JS实现如何存储字符),而后者是一个字节。在阅读适当的API之后,这是您的意图吗?

其次,作为一个具体的建议,如果您正在使用jQuery,请利用它的规范化例程。在这种情况下,event.which返回0,但您可以使用event.keyCode,这可能是您要比较的内容:

if ( 37 === event.keyCode ) {
  // ...
}
else if ( 39 === event.keyCode ) {
  // ....
}

答案 1 :(得分:0)

您要使用的是keydown事件。另外,没有理由使用String.fromCharCode,你可以只比较整数。像这样的东西会起作用

$(document).keydown(function(event) {
  if (event.which == 37 || event.which == 39) {
    var key = event.which == 37 ? 'left' : 'right';
    $('main').html('You pressed : ' + key)
    event.preventDefault()
  }
})