在javascript中的keycode和fromCharCode

fis*_*ato 1 javascript keyboard jquery

我编写了以下代码(使用jQuery)来显示按下的键.

$(window).keydown(function(e){
  $("div").text("Key:" + String.fromCharCode(e.keyCode).toLowerCase());
  return false;
});
Run Code Online (Sandbox Code Playgroud)

此代码适用于普通字母字符(q,w,e,r ...).但是当我按非字母键(如']')时,会显示一个不正确的字符.

例如:',' - >¼,']' - >ý

我的代码出了什么问题?

Rob*_*b W 8

使用keypress事件和e.which属性.

jQuery规范化密钥代码,并将变量存储在其中event.which.该keypress事件的which属性是唯一可靠的值String.fromCharCode.

event.keyCode属性可能不等于event.charCodeevent.which属性.

对于不可打印的字符,event.which其值为零,与之相反event.keyCode.这就是为什么你会看到奇怪的角色.

$(window).keypress(function(e) {
    var charCode = e.which;
    if (!charCode) { // <-- charCode === 0
        return;// return false, optionally
    }
    $("div").text("Key:" + String.fromCharCode(charCode).toLowerCase());
    return false; // Or e.preventDefault(); and/or e.stopPropagation()
}).keyup(function(e) {
    // Key is lifted, do something
});
Run Code Online (Sandbox Code Playgroud)