我使用以下jQuery事件侦听器在文本框中按下键:
$("#theInput").keyup(function (e) {
var charCode = e.keyCode || e.which;
alert(charCode);
/* rest of the code */
});我的问题是如何准确地获取输入的字母的代码。例如,如果我按下'a‘键,它将提示'65’--不管它是"A“还是"a”。如果我将输入语言切换为外语(例如日语、中文、泰语)并按'a‘键,它仍然返回'65’而不是不同的代码,让我知道该外语字符。
有没有办法解决这个问题,让它给出正确的语言和字母的大小写?
发布于 2011-10-20 13:40:19
你读过关于keyup和keydown事件如何工作的jQuery doco吗?它们应该返回一个键代码(而不是字符代码),而不管当时是否按下了shift,尽管event object确实有一个shiftKey属性来告诉您shift是否按下了。keyup允许您区分与同一字符相关联的不同键,因此您可以判断是否通过数字键盘输入了数字。
您想要的事件是 ,返回区分大小写的字符代码。尽管如此,我不确定它在外语中是如何工作的,而且在任何情况下,整个方法都不允许用户通过从剪贴板粘贴来输入其他文本,所以这是你需要考虑的其他问题。
(顺便说一句,jQuery会规范化event.which属性,因此您不需要首先检查event.keyCode。)
发布于 2011-10-20 13:43:32
无论使用哪种语言,键都是相同的。您可以使用.shiftKey获得这种情况,但最可靠的方法是保存实际字符:
$('#input').keyup(function(e){
var character = this.value.slice(-1)
console.log(character)
})不过,这过于简单了,因为文本可以在末尾以外的其他地方键入。您必须找到光标位置,然后获取相应的字符。
https://stackoverflow.com/questions/7831494
复制相似问题