Javascript:event.which 和 charCodeAt 协同工作

标签 javascript jquery keypress

我在按键时使用 event.which 获取用户键入的内容,并使用 String.fromCharCode 输出。

用户类型:a
event.which:67
输出:A

对于数字和字母我可以处理,但是当谈到特殊字符时,我得到完全不同的输出。

用户类型:-
事件:189
输出:½

经过研究,我遇到了函数charCodeAt,使用这个函数,输出非常完美,甚至是特殊字符。

不幸的是,我不能使用 charCodeAt,因为用户直接从 $(文档)而不是从字段中输入。

所以,问题是,有没有一种方法可以从 keyPress 事件中获取正确的 charCode。哪个?

如果还是想不通我的疑惑,我给你一个Fiddle =)

最佳答案

使用 keypress 事件代替 keyup。它报告字符代码而不是键代码,它在实际字符被键入时触发,而不是在释放键时触发,因此它也处理重复的字符。

$('#field').focus().keypress(function(e){
  var key = e.which;
  $("#key").val(String.fromCharCode(key));
});

http://jsfiddle.net/Guffa/QCHt7/1/

编辑:

如果你想在任何地方捕捉按键,你必须在文档上 Hook 事件,还要在任何消耗按键的元素上 Hook 。例如,文本框将处理按键并且不会让它冒泡到父元素。

关于Javascript:event.which 和 charCodeAt 协同工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744793/

相关文章:

javascript - 如何将字符串一次转换为数学函数?

javascript - 如何按需加载模块?

jquery - 如何区分 'right click using mouse' 和 'context menu key press on physical keyboard'

java - 如何在 Java 中使用 Robot 类输入 URL

javascript - 如何在php-moodle中删除之前添加确认消息

javascript - 热修复 "Type ' 字符串'不可分配给类型 'T'“?

javascript - 如何在jointjs中创建保存工作区功能?

javascript - 当部分宽度设置为 0 时隐藏文本

jquery - 将对象推送到数组而不从 DOM 中删除

javascript - jQuery 未检测到 keyup 上的修饰符