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. })();  

 本文转自边城__ 51CTO博客,原文链接:http://blog.51cto.com/jamesfancy/667869,如需转载请自行联系原作者

相关文章
|
JavaScript
js节点、属性操作,计时器,location、history对象,常见键盘事件
js节点、属性操作,计时器,location、history对象,常见键盘事件
|
6月前
|
JavaScript 前端开发
JS实现键盘事件(回车)的登录
JS实现键盘事件(回车)的登录
39 0
|
6月前
|
JavaScript 前端开发
js基础——事件(鼠标事件、键盘事件、表单事件......)
js基础——事件(鼠标事件、键盘事件、表单事件......)
57 0
|
JavaScript 前端开发
js的键盘事件
js的键盘事件
52 0
|
JavaScript 前端开发
JS的键盘事件
JS的键盘事件
|
JavaScript 前端开发
js常用点击、鼠标、键盘事件--详解
js常用点击、鼠标、键盘事件--详解
138 0
|
JavaScript 前端开发
|
JavaScript 程序员
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
160 0
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
|
JavaScript
js组合键和单个键盘事件
js组合键和单个键盘事件
210 0
js组合键和单个键盘事件