我正在尝试使用jQuery中的keyUp捕获字符代码。当按下符号(不在数字键盘上)和+符号(也不在数字键盘上)时,我试图捕捉它们。问题是,他们的字符键是两者。如果你正常按它,你得=。如果你移动+按它,那么你得+。我的代码是这样的:
(document).keyup(function(evt) {
keyPressed = evt.keyCode ? evt.keyCode : evt.charCode;
switch (keyPressed) {
case 187: // perfectly captures the equal key pressed
case ???: // what should I put here
// ........
那么当他们按下PLUS shift时,如何捕获(可能在这种情况下的语句)?是否有一些优雅的方式来做到这一点?
答案 0 :(得分:2)
evt
还有另一个您感兴趣的属性 - shiftKey
,它是一个布尔值,表示按下了shift键。因此,你可以这样做:
$(document).keyup(function(evt) {
keyPressed = evt.keyCode ? evt.keyCode : evt.charCode;
if(keyPressed == 187){
if(evt.shiftKey){
// is + as shift was also pressed
}
else{
// is =
}
}
});
答案 1 :(得分:0)
相反,您可以使用相同的keycode
并检查按下shiftkey
的情况:
switch (keyPressed) {
case 187:
if(evt.shiftKey){
console.log('+');
}else{
console.log('=');
}
break;
}
答案 2 :(得分:0)
keyup
事件的处理程序名为shiftKey
:
$(document).keyup(function(evt) {
keyPressed = evt.keyCode ? evt.keyCode : evt.which;
switch (keyPressed) {
case 187:
if (evt.shiftKey)
alert("+");
else
alert("=");
break;
}
});
参见Fiddle
keypress
代替keyup
(keycode
不同)。看看
$(document).keypress(function(evt) {
keyPressed = evt.keyCode ? evt.keyCode : evt.which;
switch (keyPressed) {
case 61:
alert("=");
break;
case 43:
alert("+")
break;
}
});
请参阅Fiddle
答案 3 :(得分:0)
您最好的选择是使用keypress
事件:
$(document).keypress(function (evt) {
var keyPressed = String.fromCharCode(evt.which);
console.log(keyPressed)
});
event.which已归一化