检测按下哪个键 - 这是一个好方法吗?

时间:2012-07-18 19:42:26

标签: javascript html keystroke

我刚才在互联网上找到了一个简单的代码...找不到特定的网站,但代码是在2005年制作的。所以,我想知道这是否是一个很好的方法:< / p>

这是在HTML中:

<body onload="document.body.focus();" onkeyup="return keypressed(event)">

当密钥启动时,它会在JavaScript中调用此函数:

function keypressed(e) {
    var intKey = (window.Event) ? e.which : e.keyCode;
    if (intKey == 13) { // 13 = enter key
        //something happens if the key is clicked
    }
        // here, you can add as many if sentences for key strokes as you want! (same as first)

return true;
}

我的意思是代码是7年(可能更多!),我认为它可能有点或非常过时!

我的问题:

  1. 是否有更好的方法可以做到这一点还是一个好方法? (我不想在这段代码中使用jQuery,因为我不想只为一个函数使用它)

  2. 我真的需要这段代码:onload="document.body.focus();"? (我没有编写这段代码,所以我不知道。)

2 个答案:

答案 0 :(得分:3)

您不需要load处理程序,页面在加载后已经过关注,并且/或者如果有人在页面的任何位置按输入,它也会被关注。

如果你需要keyup处理程序取决于你想用它做什么。您显示的代码是一个输入处理程序。如果您希望文本输入字段在输入输入时起作用,则将处理程序添加到该字段会更有效。

此外,最好在脚本中执行此操作(unnobtrusive javascript用法的一部分)。 keypress处理程序就足够了,因为否则输入值将成为输入值的一部分。类似的东西:

[someTextInput].onkeypress = function(e){
  e = e || event;
  if ( (e.which || e.keyCode) === 13 ){
     // do things
  }
}

或者您可以使用addEventListener/attachEventSee here)。

答案 1 :(得分:1)

function displayunicode(e){
        var unicode = e.keyCode ? e.keyCode : e.charCode
        alert(unicode)
}

另一种做同样事情的方法。