在keyUp上区分=和+

时间:2015-12-04 13:17:25

标签: jquery

我正在尝试使用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时,如何捕获(可能在这种情况下的语句)?是否有一些优雅的方式来做到这一点?

4 个答案:

答案 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代替keyupkeycode不同)。看看

$(document).keypress(function(evt) {
    keyPressed = evt.keyCode ? evt.keyCode : evt.which;

    switch (keyPressed) {
        case 61:
            alert("=");
            break;
        case 43:
            alert("+")
            break;
    }
});

请参阅Fiddle


同时检查 - Difference between keyup and keypress

答案 3 :(得分:0)

您最好的选择是使用keypress事件:

$(document).keypress(function (evt) {
  var keyPressed = String.fromCharCode(evt.which);
  console.log(keyPressed)
});

event.which已归一化