Javascript numberpad键码解析
我正试图用以下内容解析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的值不是字符代码;这是一个关键代码(代码因浏览器/操作系统而异)。您可以使用将其映射到角色,但如果说这东西
$('#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);