从按键事件中读取字符

Read character from keypress event

我正在尝试用 jquery 做一个 if 语句来检查是否按下了 'abc' 字符。 我希望用正则表达式来做到这一点,而不是像这样检查每个键的键盘 code/ascii 字符:

$('#main-field').on('keypress, keydown', function(event) {
    if ((event.which != 37 && (event.which != 39)...) {
        code here
    }
}

我知道 event.which 为您提供了每个字符的键盘代码,但我如何到达按下的字符本身以检查它是否是 'abc' 带有 reg exp 的字符? 谢谢

您要查找的键码是 6590,相当于 az。然后您可以检查事件的键码是否在该范围内。

另请注意,您不需要在 on 调用中使用逗号分隔事件名称。试试这个:

$('#main-field').on('keypress keydown', function(event) {
    if (event.which >= 65 && event.which <= 90) {
        // key a-z was pressed, do something here...
    }
}

您可以找到可用键码列表 here

您可以使用 String.fromCharCode( 65 ) 获取字符 (a-z)。 它是一种静态方法,可将 unicode 数字转换为其键盘布局上的相应字符。

var chars = '';
$('#main-field').on('keypress, keydown', function(event) {
    var character = String.fromCharCode(event.keyCode).toLowerCase();
    chars += character;
    if (chars == 'abc') {
        alert('abc');
    }
});

因此,要检查用户是否按该顺序键入 'abc',您可以将 character 附加到 chars 字符串并将其与 'abc'

这是一个fiddle。 请注意,例如 Enter 键将 return 一个空字符串,因此您可能需要考虑一个回退。