【问题标题】:How to retrieve keyCode and charCode from a jQuery event object?如何从 jQuery 事件对象中检索 keyCode 和 charCode?
【发布时间】:2023-04-05 00:28:02
【问题描述】:
javascript 事件对象提供 keyCode() 和 charCode() 方法,以便 charCode() 为不支持的键返回 0导致显示字符,如回车、向上键、向下键、删除、退格等。
我想在 jQuery keypress 事件回调中准确检查这些字符,但 jQuery 事件对象不允许我访问上述方法。
我可以从 jQuery 中检索 js 事件对象吗?
【问题讨论】:
标签:
javascript
jquery
events
keycode
【解决方案1】:
$('#yourid').bind('keypress', function(e) {
var keycode= (e.keyCode ? e.keyCode : e.which);
if(keycode == 13){
// Enter pressed... do anything here...
}else if(keycode == 46){// delete
}else if(keycode == 8){ // backspace
}
});
Explorer 不会为 delete、end、enter、escape、功能键、home、insert、pageUp/Down 和 tab 触发按键事件。
如果您需要检测这些键,请帮自己一个忙并在 onkeydown/up 上搜索它们的 keyCode,并忽略 onkeypress 和 charCode。
【解决方案2】:
关键代码列表在 Internet 上随处可见,尽管这里是为您完成的繁重工作,而不依赖于任何框架...
if (window.addEventListener) {document.addEventListener('keydown',keyPressed,false);}
else {document.attachEvent('onkeydown',keyPressed);}
function keyPressed(evt)
{
var e = evt || event;
var key = e.which || e.keyCode;
if (!powerKeysEnabled) return;
if (showmeallcodes) {alert( key); return;}
switch (key)
{
case 77:// M
alert('m key pressed');
break;
case 76://L
alert('L key pressed');
break;
}
}