在不使用switch语句的情况下按键盘按钮按名称提醒字母

时间:2014-09-22 12:05:18

标签: javascript

这里我有一段简单的代码。我希望它能够在键盘上按下代表那些字母的按钮提醒字母[AZ]。现在它只提醒keyCodes.I我知道我可以做一个开关语句。但它将是一大块switch语句。所以我的问题是:

1.有没有办法可以在没有开关声明的情况下按下按键上的每个字母?

2.左,右,上,下箭头键没有提示他们的键码编号。为什么会这样?我怎样才能克服这个问题?

(function(){
    document.body.addEventListener('keypress',function(e){
            alert(e.keyCode);
    });
})();

2 个答案:

答案 0 :(得分:1)

显示来自keyCode的字母:

alert (String.fromCharCode(e.keyCode));

要解决箭头键没有显示keyCode s(37 - 40)的问题:



(function(){
    document.body.addEventListener('keyup',function(e){
      // the keyCodes of the arrow keys, matched to an appropriate
      // unicode arrow symbol:
      var directionals = {
        '38' : 8593, // String.fromCharCode(38) => &
        '39' : 8594, // String.fromCharCode(39) => '
        '40' : 8595, // String.fromCharCode(40) => (
        '37' : 8592 // String.fromCharCode(37) => %
      },
          // if there is a falsey value from directionals object,
          // we use the e.keyCode unchanged; otherwise we substitute
          // e.keyCode for the above-supplied arrow-character:
          keyCodeToUse = !directionals[e.keyCode] ? e.keyCode : directionals[e.keyCode];
      // I don't like alerts; to access the console (in most browsers) press 'F12':
      console.log(String.fromCharCode(keyCodeToUse));
    });
})();

html, body {
  background-color: rgba(255,255,180, 0.5);
  height: 100%;
}




问题本身就是(无论出于何种原因)箭头键只返回keyup上的keyCodes和keydown上的而不是{/ 1>}上的。此外,keypress使用其密钥代码(如上面的JavaScript中所示)返回实际上不是箭头的字符。因此,我们必须使用备用Unicode引用(在上面提供,在JavaScript中)。

参考文献:

答案 1 :(得分:1)

您可以使用String.fromCharCode功能:

String.fromCharCode(e.keyCode)