我需要从键盘中捕获一些字符,我必须使用jquery keydown(而不是按键)。
我知道有些人会建议使用按键,但我必须使用keydown,我只需要3个字符来捕获keydown函数。(字符:A,F,X)
这是我的代码。
$("#keypage").keydown(function(e){
var keycode = e.keyCode;
if( keycode === 65 || keycode === 70 || keycode === 88) {
var char = String.fromCharCode(keycode);
}
// do something with char
});
这种方法有问题吗?
编辑: 我问了这个问题,因为我想知道如果keydown有这种方法的字符问题。
答案 0 :(得分:0)
如果您只想检查上面提到的字符,那么可以使用keydown
keypress
事件通常最容易使用。他们是 可能会导致非美国键盘问题显着减少 布局并不难确定按下了哪个键。您 可以通过执行以下方式输入字符:
if (event.which == null)
char= String.fromCharCode(event.keyCode); // old IE
else if (event.which != 0 && event.charCode != 0)
char= String.fromCharCode(event.which); // All others
else
// special key
如何处理特殊键上的
keypress
事件是一个问题。我建议假装他们从未发生过。如果你真的 想要处理特殊的关键事件,你可能应该工作 用keydown和keyup代替。对于keydown
和keyup
事件,您可以 通过公正来识别最常见的密钥(字母,数字和其他几个) 看着event.keyCode
并且或多或少地假装它是一个 ASCII码。但是,它并不是真的,还有很多Javascript手册 说它可以通过做到转换为角色String.fromCharCode(event.keyCode)
错了。在keydown
和keyup
事件,密钥代码不是字符代码,这种转换将 为许多键提供狂野的结果。没有一般的便携方式 将密钥代码转换为字符。由于存在错误,许多密钥无法在keydown和 Macintosh Gecko中的keyup。
现在,如果您需要检查复杂的密钥代码及其哈希值,那么按键是最佳选择。有关详细信息,您可以在this link
上阅读keydown,keypress和keyup事件详细信息