【问题标题】:event on pressing enter javascript按下 enter javascript 时的事件
【发布时间】:2012-04-20 18:28:49
【问题描述】:

每当我按下向上或向下按钮时,我都可以检查是否按下了这些键,例如此处会触发警报:

 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 上工作正常

提前致谢。

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

【问题讨论】:

  • 每个浏览器都会出现这种情况吗?你注意到哪个浏览器了?你能提供一个小提琴吗?
  • 我使用了 firefox ...我需要它主要在 firefox 上工作
  • 签出这个 fiddle 在 Firefox 中为我工作...显示 keyCode 13
  • 让我猜猜:你想在<textarea> 中捕获回车键?
  • 在小提琴中也对我有用,但在我使用我的代码时却不行

标签: javascript event-listener


【解决方案1】:

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

当然。
How do you set focus to the HTML5 canvas element?

甚至更好:

1- 标签索引:

$("#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?

【讨论】:

    【解决方案2】:

    回车键码是13。

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

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

        function check() {
            if (window.event.keyCode == 13) {
                document.write("Enter pressed");
            }
        }
    
    <body onkeypress="check()">
    </body>
    

    【讨论】:

    • 我认为这只适用于 Chrome...这里当前事件对象存储在 window.event 中...但这在其他浏览器中不起作用 imho
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多