如何获取按下的键并将其放入数组中,而不是返回键码?
例如,用户按下'a'键。然后,代码将把'a'(而不是字符的键码)放入数组中。
谢谢!
如何获取按下的键并将其放入数组中,而不是返回键码?
例如,用户按下'a'键。然后,代码将把'a'(而不是字符的键码)放入数组中。
谢谢!
var your_array = [];
document.onkeydown = function (e) {
var keyPress;
if (typeof event !== 'undefined') {
keyPress = event.keyCode;
}
else if (e) {
keyPress = e.which;
}
your_array.push(String.fromCharCode(keyPress));
return false; // Prevents the default action
};
更新:如果您需要准确的字符信息(例如区分大写字母和小写字母等),请务必查看@Tim Down在下面的评论和他的其他答案。
keypress
事件来获取所键入的字符,而不是 keydown
事件。 - Tim Downkeydown
事件似乎是最可靠的。主要区别在于,使用keydown
事件时,您将收到小写字母和大写字母相同的keyCode
(因为您按下了相同的键)。这是否可接受取决于OP正在构建什么。我还有遗漏的吗? - Daniel Vassallokeydown
没有问题,但在这种情况下,keyCode
在所有浏览器中都可以很好地工作,因此没有必要查看任何其他属性。然而,原帖确实明确表示他/她对字符信息感兴趣。 - Tim Downkeypress
事件来实现此功能。 keydown
和keyup
不能可靠地用于获取字符信息。JavaScript键盘事件的详细说明可以在http://unixpapa.com/js/key.html上找到。请注意,保留了HTML标签。var charsTyped = [];
document.onkeypress = function(evt) {
evt = evt || window.event;
// Ensure we only handle printable keys
var charCode = typeof evt.which == "number" ? evt.which : evt.keyCode;
if (charCode) {
charsTyped.push(String.fromCharCode(charCode));
}
};
e
是事件对象):myarray.push(String.fromCharCode(e.charCode));
fromCharCode
如何返回给定Unicode字符代码的字符。还要注意我使用charCode
而不是keyCode
,因为它在返回字符代码时更正确,有时与键码不同(您需要字符)。charCode
,但是有些浏览器不支持它:http://www.quirksmode.org/js/keys.html - Daniel VassallocharCode
仅存在于keypress
事件中。对于IE,keypress
事件中的keyCode
是字符代码,并且您无法在IE中获取非可打印键的keypress
事件,因此您可以相当可靠地获取字符代码。请参见我的答案。 - Tim Downvar yourKeyArray = []
node.addEventListener("keydown", function(event) {
var key = keysight(event).key // ignores shift keys, so 'A' is given as 'a'
// var char = keysight(event).char // only characters, and differentiates between 'A' and 'a'
yourKeyArray.push(key)
})