2009-09-16 61 views

回答

7

对于具有可打印的字符等效键,你应该使用keypress事件,因为你可以从keypress事件,这通常是不可能的keyup和​​事件检索的字符代码。

你需要的事件属性是whichkeyCode - 几乎所有的浏览器都有一个或两个的这些,虽然IE使用keyCode的字符代码muddies水域,而其他一些浏览器返回(不同的)关键代码。大多数非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

+0

基本上,这意味着我必须使用onkeydown处理onkeypress和其余(如delete键)的可打印字符? – Christian 2009-09-17 00:04:28

+0

是的。如果它只是删除键,它应该没问题 - 我相信在大多数浏览器和键盘上keyCode是46。 – 2009-09-17 08:31:50

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”。

+0

注意:此代码使用id为“location”的HTML元素,并引用一个名为typeIt(“LETTER”)的函数来分析文本是否应加粗,斜体或加下划线。 – IamGuest 2016-09-03 14:26:09