我已经使用jquery将此函数附加到按键事件,但在eventObject中它返回相同的字符和小写字符输入的字符代码
function keyPressed(delegates,eventdata){
var keyType = new KeyType();
var keycode = eventdata.which;
if((keycode === 0)&&(eventdata.keyCode === 46)){
keycode=46;
}
switch(keycode)
{
case keyType.enter:
break;
case keyType.backspace:
break;
case keyType.del:
break;
case keyType.space:
break;
default:
keycode = 1;
}
console.log(eventdata.charCode);
console.log(eventdata.which);
console.log(eventdata.keyCode);
//if a delegate is present call it
var delegate = delegates[keycode];
if(delegate !== null){
delegate(eventdata);
}
}
答案 0 :(得分:1)
char代码表示按下的键。您的键盘只有一个“a”和“A”键。您还需要检查shift键:
if (eventData.shiftKey) {
//Shift
}
if (eventData.ctrlKey) {
//Ctrl
}
if (eventData.altKey) {
//Alt
}
答案 1 :(得分:1)
使用jQuery检测键盘/鼠标事件时,应始终使用event.which
来获取跨浏览器的规范化用户输入。
稍微偏离主题的说明性历史,几个月前我在Vanilla JS中制作了一个用户手册,它在FF和Chrome中运行得非常好,而且刚才我有一份报告称它在Opera中不起作用。我在Opera上快速调试了它,当然event.keyCode
在它应该是键的值时返回0
。
所以,是的,每当你可以使用jQuery的event.which
来处理用户输入时,使用它来节省很多麻烦。
keydown
和keypress
是不同的事件,因此可能会针对不同的事件报告不同的值 - 这可能会因为keyCode
和/或charCode
属性而有所不同在不同的浏览器。 event.which
最大限度地减少了这些差异。