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

将onkeydown收集的击键转换为JavaScript中的字符,javascript,Javascript,我试着把击键转换成键盘。 在另一个问题中,有人建议使用onkeydown函数,因为onkeypress由不同的字符处理 我不知道如何处理世界各地不同键盘上可能不同的特殊字符,如```()。对于具有可打印字符等价物的键,您应该使用keypress事件,因为您可以从keypress事件检索字符代码,这对于keyup和keydown事件通常是不可能的 您需要的事件属性是其中和keyCode——几乎所有浏览器都有一个或两个属性,尽管IE通过对字符代码使用keyCode,而其他一些浏览器返回(不同的)键代

我试着把击键转换成键盘。 在另一个问题中,有人建议使用onkeydown函数,因为onkeypress由不同的字符处理


我不知道如何处理世界各地不同键盘上可能不同的特殊字符,如```()。

对于具有可打印字符等价物的键,您应该使用
keypress
事件,因为您可以从
keypress
事件检索字符代码,这对于
keyup
keydown
事件通常是不可能的

您需要的事件属性是
其中
keyCode
——几乎所有浏览器都有一个或两个属性,尽管IE通过对字符代码使用
keyCode
,而其他一些浏览器返回(不同的)键代码来混淆视听。大多数非IE浏览器也有
charCode
,但似乎所有这类浏览器也都有
,而
charCode
是不需要的。一个简单的例子:

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


这将成功地将按键代码转换为字符串字母,可以在更大的函数中使用。这需要更多的时间,但我发现它与大多数浏览器和键盘(不管是什么语言)高度兼容。我在一个文本编辑器项目中使用了这段代码,该项目将分发给几个国家的朋友,因此我相信它会起作用。注意:上面的函数只包括字母“A”、“B”和“C”。

基本上这意味着我必须使用onkeypress处理可打印的字符,而使用onkeydown处理其余字符(如删除键)?是的。如果只是delete键就可以了——我相信大多数浏览器和键盘的键盘代码都是46。注意:此代码与id为“location”的HTML元素一起工作,并引用一个名为typeIt(“字母”)的函数来分析文本是否应为粗体、斜体或下划线。
 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");
}
}