我尝试将按键转换为字符。 在其他问题有人推荐使用onkeydown函数,因为onkeypress获取不同的字符不同。将onkeydown收集的按键转换为JavaScript中的字符
我不知道如何处理像``'()这样的特殊字符,这在世界各地不同的键盘上可能会有所不同。
我尝试将按键转换为字符。 在其他问题有人推荐使用onkeydown函数,因为onkeypress获取不同的字符不同。将onkeydown收集的按键转换为JavaScript中的字符
我不知道如何处理像``'()这样的特殊字符,这在世界各地不同的键盘上可能会有所不同。
对于具有可打印的字符等效键,你应该使用keypress
事件,因为你可以从keypress
事件,这通常是不可能的keyup
和事件检索的字符代码。
你需要的事件属性是which
和keyCode
- 几乎所有的浏览器都有一个或两个的这些,虽然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。
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”。
注意:此代码使用id为“location”的HTML元素,并引用一个名为typeIt(“LETTER”)的函数来分析文本是否应加粗,斜体或加下划线。 – IamGuest 2016-09-03 14:26:09
基本上,这意味着我必须使用onkeydown处理onkeypress和其余(如delete键)的可打印字符? – Christian 2009-09-17 00:04:28
是的。如果它只是删除键,它应该没问题 - 我相信在大多数浏览器和键盘上keyCode是46。 – 2009-09-17 08:31:50