我需要在keypress事件上获得本地化角色。例如:在捷克键盘上我需要得到不是5个字符(键代码53)(参见Czech keyboard layout)。有没有其他方法来获得角色,不使用文本输入和阅读价值?换句话说,有什么方法可以从事件对象中获取关于当前用户键盘布局的字符吗?
(添加示例代码)
<html>
<body>
<script language="JavaScript">
function onLoad() {
console.log(document.getElementById("test"));
document.getElementById("test").onkeydown = function(event) {
console.log("Code: "+event.keyCode+"; Key: "+String.fromCharCode(event.keyCode));
}
}
</script>
<body onLoad="onLoad();">
<input id="test">
</body>
</html>
(例如online)
当您尝试此代码时,按下ř-key,您将在Firebug控制台中看到“Code:53; Key:5”。我需要得到“ř”而不是“5”。
我认为这个“问题”出现在所有非英语键盘上。
答案 0 :(得分:15)
使用keypress
事件将为您提供键入的字符,无论键盘布局如何。
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.which || evt.keyCode;
var charTyped = String.fromCharCode(charCode);
alert("Character typed: " + charTyped);
};
这是我通常链接到Jan Wolter的优秀页面,记录了JavaScript密钥处理:http://unixpapa.com/js/key.html
答案 1 :(得分:1)
确保使用'keypress',但不是'keydown'事件。
如果您使用'keydown'String.fromCharCode(event.keyCode || event.which)
,则不会返回本地化字符。至少对于使用Chrome / FF的OS X来说,这是一个问题。