javascript - 检测按下或向上按下的 ctrl 键,按键事件不触发

新手上路,请多包涵

我在这里看到一些类似的问题(比如 JavaScript: Check if CTRL button was pressed )但我的问题实际上是事件触发。我的js代码:

     // Listen to keyboard.
    window.onkeypress = listenToTheKey;
    window.onkeyup = listenToKeyUp;

    /*
        Gets the key pressed and send a request to the associated function
        @input key
    */
    function listenToTheKey(e)
    {
        if (editFlag == 0)
        {
            // If delete key is pressed calls delete
            if (e.keyCode == 46)
                deleteNode();

            // If insert key is pressed calls add blank
            if (e.keyCode == 45)
                createBlank();

            if (e.keyCode == 17)
                ctrlFlag = 1;
        }
    }

该事件触发除 ctrl 之外的任何其他键。

我还需要为 ctrl 触发它。

我不能使用 jQuery/prototype/whatever,所以这些解决方案是不可接受的。

那么…我怎样才能检测到 ctrl

原文由 zozo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 478
2 个回答

使用 onkeydown 而不是 onkeypress 可能会有所帮助。

来自 http://www.w3schools.com/jsref/event_onkeypress.asp

注意:并非所有浏览器中的所有键(例如 ALT、CTRL、SHIFT、ESC)都会触发 onkeypress 事件。要仅检测用户是否按下了某个键,请改用 onkeydown 事件,因为它适用于所有键。

原文由 Danielle Cerisier 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题