首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JS事件监听器中获取正确的按键语言和大小写?

如何在JS事件监听器中获取正确的按键语言和大小写?
EN

Stack Overflow用户
提问于 2011-10-20 13:22:13
回答 2查看 2.5K关注 0票数 1

我使用以下jQuery事件侦听器在文本框中按下键:

代码语言:javascript
复制
$("#theInput").keyup(function (e) {
    var charCode = e.keyCode || e.which;
    alert(charCode);
    /* rest of the code */
});

我的问题是如何准确地获取输入的字母的代码。例如,如果我按下'a‘键,它将提示'65’--不管它是"A“还是"a”。如果我将输入语言切换为外语(例如日语、中文、泰语)并按'a‘键,它仍然返回'65’而不是不同的代码,让我知道该外语字符。

有没有办法解决这个问题,让它给出正确的语言和字母的大小写?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-20 13:40:19

你读过关于keyupkeydown事件如何工作的jQuery doco吗?它们应该返回一个键代码(而不是字符代码),而不管当时是否按下了shift,尽管event object确实有一个shiftKey属性来告诉您shift是否按下了。keyup允许您区分与同一字符相关联的不同键,因此您可以判断是否通过数字键盘输入了数字。

您想要的事件是 返回区分大小写的字符代码。尽管如此,我不确定它在外语中是如何工作的,而且在任何情况下,整个方法都不允许用户通过从剪贴板粘贴来输入其他文本,所以这是你需要考虑的其他问题。

(顺便说一句,jQuery会规范化event.which属性,因此您不需要首先检查event.keyCode。)

票数 7
EN

Stack Overflow用户

发布于 2011-10-20 13:43:32

无论使用哪种语言,键都是相同的。您可以使用.shiftKey获得这种情况,但最可靠的方法是保存实际字符:

代码语言:javascript
复制
$('#input').keyup(function(e){
  var character = this.value.slice(-1)
  console.log(character)
})

不过,这过于简单了,因为文本可以在末尾以外的其他地方键入。您必须找到光标位置,然后获取相应的字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7831494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档