找不到一个解决这个在我看来很简单的问题的方法。我使用var a = evt.keyCode;来确定单击了哪个键。问题是,我得到的值是被单击键的ASCII码,而不是被单击的真实的字符。例如,如果一个用户使用的是法语键盘,点击7键是é,那么我得到的不是é的ASCII码,而是7的ASCII码55。
var a = evt.keyCode;
ryevplcw1#
您使用的是onkeypress还是onkeydown事件?您应该使用前者onkeypress来确定所按键的字符代码是否正确。在事件处理程序中,检查event.which和event.keyCode属性:
onkeypress
onkeydown
event.which
event.keyCode
function whichKey(evt) { alert(String.fromCharCode(evt.which || evt.keyCode)); }
工作演示:http://jsfiddle.net/7LsMk/
ep6jt1vc2#
试试这个:var unicode=evt.charCode? evt.charCode : evt.keyCode; var actualkey=String.fromCharCode(unicode);
var unicode=evt.charCode? evt.charCode : evt.keyCode; var actualkey=String.fromCharCode(unicode);
2条答案
按热度按时间ryevplcw1#
您使用的是
onkeypress
还是onkeydown
事件?您应该使用前者onkeypress
来确定所按键的字符代码是否正确。在事件处理程序中,检查event.which
和event.keyCode
属性:工作演示:http://jsfiddle.net/7LsMk/
ep6jt1vc2#
试试这个:
var unicode=evt.charCode? evt.charCode : evt.keyCode; var actualkey=String.fromCharCode(unicode);