Javascript键盘事件的keyChar

Javascript的键盘事件keydown, keyup的event对象中(注意keypress的event对象的keyCode已经转过码了),keyCode !=  keyChar,网上有很多人提供了keyCode到keyChar的对照表。于是,根据对照表,产生了如下工具函数,只需要把event对象作为参数传进去,就能够得到keyChar了,如果keyCode没有对应的字符,那返回的就是'\0'。

 
 
  1. window.keyChar = (function () {  
  2.     var ssss = "";  
  3.     var SSSS = "";  
  4.   
  5.     // M和m只是标尺, ssss和SSSS变量长度是为了对齐标尺  
  6.     var M = "0         1         2         3         4         ";  
  7.     var m = "01234567890123456789012345678901234567890123456789";  
  8.   
  9.     // 不带shift的码表  
  10.     ssss += "                                                01";  
  11.     ssss += "23456789       abcdefghijklmnopqrstuvwxyz     0123";  
  12.     ssss += "456789*+ -./                                      ";  
  13.     ssss += "                                    ;=,-./`       "
  14.     ssss += "                   [ ]'                           ";  
  15.   
  16.     // 带shift的码表  
  17.     SSSS += "                                                )!";  
  18.     SSSS += "@#$%^&*(       ABCDEFGHIJKLMNOPQRSTUVWXYZ     0123";  
  19.     SSSS += "456789*+ -./                                      ";  
  20.     SSSS += "                                    :+<_>?~      "
  21.     SSSS += "                   {|}                            ";  
  22.   
  23.     // 将码表拆成字符数组  
  24.     var t = ssss.split("");  
  25.     var T = SSSS.split("");  
  26.   
  27.     // 将所有空格替换成空字符  
  28.     var nullChar = String.fromCharCode(0);  
  29.     for (var i = 0; i < t.length; i++) {  
  30.         (t[i] === " ") && (t[i] = nullChar);  
  31.         (T[i] === " ") && (T[i] = nullChar);  
  32.     }  
  33.   
  34.     // 几个需要转义的字符,放在表里会影响排版,所以单独处理  
  35.     t[9] = "\t";  
  36.     t[13] = "\n";  
  37.     t[32] = " ";  
  38.     t[220] = "\\";  
  39.   
  40.     T[32] = " ";  
  41.     T[222] = '"';  
  42.   
  43.     return function (event, isCheckShift) {  
  44.         if (typeof isCheckShift === "undefined") { isCheckShift = true; }  
  45.         if (!!isCheckShift && event.shiftKey) {  
  46.             return T[event.keyCode];  
  47.         } else {  
  48.             return t[event.keyCode];  
  49.         }  
  50.     };  
  51. })();  

 

(2011年9月27日修正)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值