Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript numberpad键码解析_Javascript_Keycode - Fatal编程技术网

Javascript numberpad键码解析

Javascript numberpad键码解析,javascript,keycode,Javascript,Keycode,我正试图用以下内容解析numberpad中的按键事件: $('#myDiv').keydown(function(e) { val = String.fromCharCode(e.which) }); 问题在于,键盘0-9返回96-105的键码,根据fromCharCode()的规定,这些键码是小写字母a-i。如何获取numberpad的按键事件以解析为适当的数字?传递给keydown的值不是字符代码;这是一个关键代码(代码因浏览器/操作系统而异)。您可以使用将其映射到角色,但如果说这东西

我正试图用以下内容解析numberpad中的按键事件:

$('#myDiv').keydown(function(e) {
  val = String.fromCharCode(e.which)
});

问题在于,键盘
0-9
返回
96-105
的键码,根据
fromCharCode()
的规定,这些键码是小写字母
a-i
。如何获取numberpad的按键事件以解析为适当的数字?

传递给
keydown
值不是字符代码;这是一个关键代码(代码因浏览器/操作系统而异)。您可以使用将其映射到角色,但如果说这东西有点……尴尬……那就太轻描淡写了。:-)

否则,您最好等待
keypress
事件,该事件将包含字符代码(如果相关)而不是键代码

例如:|

jQuery(函数($){
$(“现场”)
.keydown(功能(事件){
showKey(“keydown”,event.which);
})
.按键(功能(事件){
showKey(“按键”,event.which);
})
.focus();
函数showKey(eventName,which){
显示(事件名称)+
“:“+哪个+”(“+
String.fromCharCode(which)+“);
}
功能显示(msg){
$(“”).html(msg.appendTo(document.body);
}
});
使用此HTML:

<input type="text" id="theField">


您不需要:您使用
按键事件。
keypress
事件是唯一能为您提供有关键入字符的可靠信息的事件。如果只需将
keydown
更改为
keydown
如果由于事件取消需要等原因keydown不可用,则现有代码将正常工作。在该测试中使用if()语句:

parseInt(event.keyIdentifier.substring(2),16) > 47 && parseInt(event.keyIdentifier.substring(2),16) < 58
parseInt(event.keyIdentifier.substring(2,16)>47&&parseInt(event.keyIdentifier.substring(2,16)<58
或者,对于jQuery事件:

parseInt(event.originalEvent.keyIdentifier.substring(2),16) > 47 && parseInt(event.originalEvent.keyIdentifier.substring(2),16) < 58
parseInt(event.originalEvent.keyIdentifier.substring(2,16)>47&&parseInt(event.originalEvent.keyIdentifier.substring(2,16)<58
这些示例假定“事件”是键控事件。keyIdentifier是一个十六进制数,表示相关字符的unicode值。使用keyIdentifier,来自numberpad/keypad的数字和QWERTY键盘上方的数字都将具有相同的值,即48-57(U+0030-U+0039),即使使用keyDown事件也是如此


浏览器中的Unicode值看起来像U+0030或U+002F。解析此字符串以仅获取十六进制值,然后使用基数为16的parseInt()将其转换为base-10。

此处的答案现已过时,因为它们都不推荐使用

最新版本的Firefox、Chrome、IE/Edge和Safari获取字符密钥的正确方法是使用,并且它应该与任何按键事件一起使用,而不仅仅是
keypress

文档。
查询选择器(“输入”)。
addEventListener('keydown',event=>console.log(event.key))

您可以使用keydown和检测numpad键。我使用下面的代码完成了它。在解释键之前,从numpad键中减去48

function navigate(e) {
        var keyCode = e.keyCode || e.which;
        if (keyCode >= 96 && keyCode <= 105) {
            // Numpad keys
            keyCode -= 48;
        }  
        var txtVal = String.fromCharCode(keyCode);
功能导航(e){
var keyCode=e.keyCode | | e.which;

如果(keyCode>=96&&keyCode假设我既想要键盘上的真实字符,也想要捕获并停止回车键,以防止表单提交?停止按键似乎仍然提交。我无法表达我对这个答案的感激之情。这是我的救赎,我试图用shift、alt、numpad和mob捕捉所有不同的可能情况ile键盘。
keypress
使它像蛋糕一样简单!
function navigate(e) {
        var keyCode = e.keyCode || e.which;
        if (keyCode >= 96 && keyCode <= 105) {
            // Numpad keys
            keyCode -= 48;
        }  
        var txtVal = String.fromCharCode(keyCode);