【问题标题】:How can I capture keyboard events are from which keys?如何捕获键盘事件来自哪些键?
【发布时间】:2011-06-28 10:17:03
【问题描述】:

我在网上搜索并获得了以下代码。但是,当我按下键盘键时,它没有显示警告框。我想知道我在警告框中按下了哪个字符。我该如何解决这个问题?

<script type="text/javascript">

var charfield=document.getElementById("char")
charfield.onkeydown=function(e){
var e=window.event || e;
alert(e.keyCode);
}

</script>
</head>

<body id="char">

</body>
</html>

【问题讨论】:

标签: javascript html


【解决方案1】:

如果你想得到输入的字符,你必须使用keypress 事件而不是keydown 事件。类似于以下内容:

var charfield = document.getElementById("char");
charfield.onkeypress = function(e) {
    e = e || window.event;
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
    if (charCode > 0) {
        alert("Typed character: " + String.fromCharCode(charCode));
    }
};

【讨论】:

    【解决方案2】:

    试试这个jquery代码

      $("body").keypress(function(e){
            alert(e.which);
        });
    

    【讨论】:

      【解决方案3】:

      我想不出一个使用 DOM 元素的“on some event”方法来处理该元素上的事件的好情况。

      最佳做法是使用addEventListener(或旧版本 Internet Explorer 中的attachEvent),如下所示:

      charfield.addEventListener('keydown', function (e) { alert(e.keyCode); }, false);
      

      如果你也想考虑attachEvent

      (function (useListen) {
          if (useListen) {
              charfield.addEventListener('keydown', alertKeyCode, false);
          } else {
              charfield.attachEvent('onkeydown', alertKeyCode);
          }
      })(charfield.addEventListener);
      
      function alertKeyCode(e) {
          alert(e.keyCode);
      }
      

      【讨论】:

        【解决方案4】:

        您将获得相应的密钥代码:

        charfield.onkeydown=function(evt){
            var keyCode = (evt.which?evt.which:(evt.keyCode?evt.keyCode:0))
            alert(keyCode);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-07-14
          • 2012-08-06
          • 1970-01-01
          • 2020-03-10
          • 2012-02-01
          • 2014-04-28
          • 1970-01-01
          相关资源
          最近更新 更多