【问题标题】:In keyEvent, How can I catch the key " * "?在 keyEvent 中,我怎样才能抓住关键“*”?
【发布时间】:2015-01-18 02:47:12
【问题描述】:
    if(keyEvent.keyCode == 8){
        $scope.erase();
    }

    else if(keyEvent.keyCode === 107){
    console.log("+");
    $scope.inputToCal('+')
    }

    else if(keyEvent.keyCode === 109){
    console.log("-");
    $scope.inputToCal('-')
    }

    else if(keyEvent.keyCode === 16){
    console.log("*");
    $scope.inputToCal('*')
}
    }

    else if(keyEvent.keyCode === 111){
    console.log("/");
    $scope.inputToCal('/')
    }

我正在尝试制作一个可以捕捉“keydown”的计算器。

我可以抓住这些键,“+”、“-”、“/”。

这些键码是“107”、“109”、“111”

但是,有一个问题。

我无法抓住关键的“*”。

有没有办法解决这个问题?

或者,我是否必须定义新数组来捕捉键 "Shift"(keyCode:16) 和 "8"(keyCode:56) ?

对不起,我是 keyEvent 的新手。 我在等一个解决方案... 请帮帮我!!

【问题讨论】:

  • 如果你改用keypress,你会捕捉到需要按下shift键的字符

标签: javascript angularjs key


【解决方案1】:

你必须单独处理 shift 键的按下。

function handleKeyDown(e) {
 var shiftPressed=0;
 var event = (e==null ? event:e);
 shiftPressed=event.shiftKey;
 if ((shiftPressed)&& (event.keyCode==56)) 
   alert ("You pressed * key");
 return true;
}

演示:http://jsfiddle.net/soxj0v54/1/

对于您的代码,它看起来像-

else if(keyEvent.keyCode === 56 && keyEvent.shiftKey){
    console.log("*");
    $scope.inputToCal('*')
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 2013-11-09
    • 1970-01-01
    • 2012-05-22
    • 2015-06-13
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多