按下输入javascript的事件

时间:2012-04-20 18:28:49

标签: javascript event-listener

无论何时按下向上或向下按钮,我都可以检查是否按下了这些按键,例如在这里会发出警告:

 if ((38 in keysDown) ) { // Player holding up

       window.alert("up button was pressed");
 }


 if ((40 in keysDown) ) { // Player holding down

       window.alert("down button was pressed");
 }

但是在这里,即使我按下进入警报也不会播放

if ((13 in keysDown) ) { // player pushed on enter
       window.alert("enter key was pressed"); // here nothing happen
}

我在开始时使用这3行来添加事件列表器:

   keysDown = {};
   addEventListener("keydown", function (e) {keysDown[e.keyCode] = true;}, false);
   addEventListener("keyup", function (e) {delete keysDown[e.keyCode];}, false);

但由于某种原因,我不知道输入键不起作用 问题发生在Firefox上,在Chrome和IE上正常工作

提前感谢。

编辑我找出了问题,我使用的画布没有焦点, 所以输入按钮不起作用,可以告诉我如何切换焦点?

3 个答案:

答案 0 :(得分:0)

输入的关键代码是13。

这是一个检测按下回车键的简单事件方法:

编辑:我用更简单的东西编辑了我的帖子:

    function check() {
        if (window.event.keyCode == 13) {
            document.write("Enter pressed");
        }
    }

<body onkeypress="check()">
</body>

答案 1 :(得分:0)

在Firefox中使用event.which,在IE中使用event.keyCode

答案 2 :(得分:0)

  编辑我弄清楚问题,我正在使用的画布没有   焦点,所以输入按钮不起作用,可以任意告诉我如何切换   重点?

确定。
How do you set focus to the HTML5 canvas element?

甚至更好:

1- Tabindex:

$("#canvas")
    // Add tab index to ensure the canvas retains focus
    .attr("tabindex", "0")
    // Mouse down override to prevent default browser controls from appearing
    .mousedown(function(){ $(this).focus(); return false; }) 
    .keydown(function(){ /* ... bla bla bla ... */ return false; });

2-设置contentEditable为true:

// Add content editable to help ensure the canvas retains focus
$("#canvas").attr("contentEditable", "true")
$("#canvas")[0].contentEditable = true;

来源:How do I give an HTML canvas the keyboard focus using jquery?