Javascript键盘事件keyChar示例代码

发布时间:2020-11-10编辑:脚本学堂
本文介绍了Javascript键盘事件keyChar的使用实例,感兴趣的朋友参考下。

javascript的键盘事件keydown, keyup,  keypress的event对象中,keyCode !=  keyChar,网上有很多人提供了keyCode到keyChar的对照表。

于是,根据对照表,产生了如下工具函数,只需要把event对象作为参数传进去,就能够得到keyChar了,如果keyCode没有对应的字符,那返回的就是''。

例子:
 

复制代码 代码示例:
window.keyChar = (function () {
    var ssss = "";
    var SSSS = "";
 
    // M和m只是标尺, ssss和SSSS变量长度是为了对齐标尺
    var M = "0         1         2         3         4         ";
    var m = "01234567890123456789012345678901234567890123456789";
 
    // 不带shift的码表
    ssss += "                                                01";
    ssss += "23456789       abcdefghijklmnopqrstuvwxyz     0123";
    ssss += "456789*+ -./                                      ";
    ssss += "                                     ;=.-,/`      ";
    ssss += "                   [ ]'                           ";
 
    // 带shift的码表
    SSSS += "                                                )!";
    SSSS += "@#$%^&*(       ABCDEFGHIJKLMNOPQRSTUVWXYZ     0123";
    SSSS += "456789*+ -./                                      ";
    SSSS += "                                     :+>_<?~      ";
    SSSS += "                   {|}                            ";
 
    // 将码表拆成字符数组
    var t = ssss.split("");
    var T = SSSS.split("");
 
    // 将所有空格替换成空字符
    var nullChar = String.fromCharCode(0);
    for (var i = 0; i < t.length; i++) {
        (t[i] === " ") && (t[i] = nullChar);
        (T[i] === " ") && (T[i] = nullChar);
    }
 
    // 几个需要转义的字符,放在表里会影响排版,所以单独处理
    t[9] = "t";
    t[13] = "n";
    t[32] = " ";
    t[220] = "";
 
    T[32] = " ";
    T[222] = '"';
 
    return function (event, isCheckShift) {
        if (typeof isCheckShift === "undefined") { isCheckShift = true; }
        if (!!isCheckShift && event.shiftKey) {
            return T[event.keyCode];
        } else {
            return t[event.keyCode];
        }
    };
})();