以下页面无法按预期工作。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script src="js/jquery.js"></script>
</head>
<body>
<script>
$('body').keypress(function(e){
console.log('char: ',String.fromCharCode(e.keyCode));
});
</script>
</body>
</html>
尝试输入á é í ó ú
等特殊字符会改为打印a e i o u
。
答案 0 :(得分:1)
请注意,keypress
的jQuery文档说:“注意:,因为keypress
事件未被任何官方规范涵盖,使用它时遇到的实际行为可能不同浏览器,浏览器版本和平台。“它还说:”要确定输入了哪个字符,请检查传递给处理函数的event
对象。虽然浏览器使用不同的属性来存储此信息,但jQuery会规范化.which
属性,以便您可以可靠地使用它来检索字符代码。“
至少在Windows上,使用e.which
在浏览器中提供一致的结果,而e.keyCode
则不然。并且它产生输入的字符,例如á当我按下急钥(')然后按A键。如果在OSX中没有发生这种情况,那么解释可能是处理密钥时的系统级差异;您可能需要检查是否可以更成功地使用keydown
和keyup
(它们应该指示按下的键,并且您需要在程序逻辑中从它们中推断出字符)。