0

以下页面将无法按预期工作。

<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

4

1 回答 1

1

请注意,jQuery 文档中keypress说:“<strong>注意:由于该keypress事件未包含在任何官方规范中,因此使用它时遇到的实际行为可能因浏览器、浏览器版本和平台而异。” 它还说:“要确定输入了哪个字符,请检查event传递给处理函数的对象。虽然浏览器使用不同的属性来存储这些信息,但 jQuery 对.which属性进行了规范化,因此您可以可靠地使用它来检索字符代码。”</p>

至少在 Windows 上, usinge.which在浏览器中给出一致的结果,而e.keyCode没有。它会产生输入的字符,例如当我按锐键 (´) 然后按 A 键时 á。如果这在 OSX 中没有发生,那么解释可能是处理密钥的系统级差异;您可能需要检查您是否可以更成功地使用keydownkeyup它们应该指示按下的键,并且您需要在程序逻辑中从它们中推断出字符)。

于 2013-01-27T10:17:35.527 回答