【问题标题】:Special characters not working on html keypress events on OSX特殊字符不适用于 OSX 上的 html 按键事件
【发布时间】:2013-01-27 02:05:34
【问题描述】:

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

<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

【问题讨论】:

  • 您按哪些键来获取特殊字符?每个按键都是一个单独的按键事件。
  • @bfavaretto ´ 键后跟 e 键,产生 é(例如)。
  • 如果需要几个键来获取字符,您可能希望将它们全部记录下来:$('body').bind('keyup keydown keypress', function(e){ console.log('char: ',String.fromCharCode(e.keyCode));});
  • 你昨天的问题有什么不同吗? stackoverflow.com/questions/14541296/…

标签: javascript jquery macos html


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2021-09-05
    • 2014-08-09
    • 2016-03-03
    • 1970-01-01
    • 2016-09-13
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多