我怎么知道一个特定的事件.keyCode对应一个字符,而不是一个命令键(如箭头、tab或enter)

How do I know a particular event.keyCode corresponds to a character and not a command key (such as arrows, tab or enter)

本文关键字:一个 命令 enter tab 字符 事件 keyCode 我怎么知道      更新时间:2023-09-26

我使用javascript/jQuery..在input[type='text']keydown上,我收到一个密钥码。我需要确定它是字符代码还是命令代码,因为我需要知道输入是否会改变。我不能使用change事件,因为这个事件是分离的,直到元素失去焦点。

与其摆弄键码,不如在内存中保存一个值的缓存副本,并在每次按下键时进行比较(必要时进行更新):

var the_value = $('#the-input').val();
$('#the-input').keyup(function(ev) {
    if (the_value != $(this).val()) {
        the_value = $(this).val();
        // input has changed, act on event here
    }
});

您应该能够在您的事件处理程序中使用event.ctrlKey, event.altKeyevent.shiftKey等。

还检查Ascii表,您可以检查keycode是否在33 &127,例如,检查a-z,数字和标点符号(遗漏空格,del, enter等)

switch (e.keyCode) {
// up                                                                         
case 38:
break;
// down                                                                        
case 40:
break;
// esc                                                                         
case 27:
break;
// enter                                                                         
case 13:
break;
}

寻找javascript关键字在谷歌获得完整的列表。javascript键码不完全跨浏览器一致

简短的回答是,您根本无法可靠地检测击键是否对应于在keydownkeyup事件(仅与物理键有关)中键入可打印字符。对于任何与检测字符类型有关的操作,请使用keypress事件。

然而,听起来你真正需要的是HTML5输入事件。请看我的回答:

只捕获改变输入的按键?