将onkeydown收集的击键转换为JavaScript中的字符

时间:2009-09-16 22:39:55

标签: javascript

我尝试将击键转换为chracters。 在其他问题中,有人建议使用onkeydown函数,因为onkeypress因不同的字符而受到不同的影响。

我不知道如何处理像'''()这样的特殊字符,它们在世界各地的不同键盘中可能会有所不同。

2 个答案:

答案 0 :(得分:7)

对于具有可打印字符等效项的键,您应该使用keypress事件,因为您可以从keypress事件中检索字符代码,这通常不可用于keyup和{{keydown 1}}事件。

您需要的事件属性是whichkeyCode - 几乎所有浏览器都有其中一个或两个,尽管IE使用keyCode来代替字符代码,但有些其他浏览器返回(不同的)密钥代码。大多数非IE浏览器也有charCode,但似乎所有此类浏览器都有which,因此永远不需要charCode。一个简单的例子:

document.onkeypress = function(evt) {
  evt = evt || window.event;
  var charCode = evt.which || evt.keyCode;
  var charStr = String.fromCharCode(charCode);
  alert(charStr);
};

这是useful reference page

答案 1 :(得分:0)

 document.onkeydown = checkKey;
function checkKey(e) {

e = e || window.event;
document.getElementById("label").style.display = "none";
if (e.keyCode == '65') {
    //a
    var lx = document.getElementById('location');
    typeIt("a");
}
else if (e.keyCode == '66') {
    //b
      var lx = document.getElementById('location');
    typeIt("b");
}
else if (e.keyCode == '67') {
   //c
      var lx = document.getElementById('location');
    typeIt("c");
}
}

这应该成功地将您按下的键码转换为字符串字母,您可以在更大的功能中使用它。这需要更多的时间,但我发现它与大多数浏览器和键盘高度兼容(无论语言是什么。)我在文本编辑器项目中使用此代码,该项目将分发给几个国家的朋友,所以我确信它会工作。注意:上述功能仅包括字母" A"," B"和" C"。