我在按键时使用 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/