javascript - 按住 'ctrl+enter' 会为按键事件提供与直接 'enter' 不同的键码 - 但仅限于 Windows

标签 javascript jquery input

我有以下 Javascript:

$(function(){
    $("#foo").keypress(function (event) {
        if (event.keyCode == 13) {
            console.log(event.ctrlKey ? "Ctrl+Enter (13)" : "Enter (13)");   
        }
        else if (event.keyCode == 10) {
            console.log(event.ctrlKey ? "Ctrl+Enter (10)" : "Enter (10)");
        }
    });
});

本例中的 Foo 是一个输入框。

在 Windows 下,并且仅限于 Windows - 按住 CTRL 修饰符可将 keyCode 从 13 更改为 10。因此,如果我执行 EnterCTRL + Enter,我在控制台中看到 Enter (13)Ctrl+Enter (10)。无论浏览器如何,Mac OS 和 Linux 都不会执行此操作。

这是为什么?

http://jsfiddle.net/K6NhF/ 玩 fiddle

最佳答案

在不同的浏览器中有很多不一致的地方,这里有一篇文章描述它们 JavaScript Madness: Keyboard Events

还有一个用于在 javascript 中规范化键码的库 keycode.js

关于javascript - 按住 'ctrl+enter' 会为按键事件提供与直接 'enter' 不同的键码 - 但仅限于 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889508/

相关文章:

javascript - 将类更改为另一个名称,这样它就不会在jquery中激活onClick,然后重置

c - 用户在 scanf 中键入空终止符

闭包 : help me understand 的 JavaScript 作用域

javascript - 为什么 !(~true) 不是真的?

javascript - 是否可以测试选择框中有多少个选项?

php - 使用 jquery/ajax 插入 MYSQL DB 500 内部服务器错误

c - 在c中读取字符串时内存覆盖

Python - 用字典中的条目替换字符串中的单词

javascript - Phantomjs onResourceReceived 响应体工作状态

javascript - 在 React Native 中需要图像模块时遇到问题