如何捕获键盘事件是从哪些键?

时间:2011-06-28 10:17:03

标签: javascript html

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

<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>

4 个答案:

答案 0 :(得分:8)

如果要输入字符,则必须使用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));
    }
};

答案 1 :(得分:5)

试试这个jquery代码

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我无法想到使用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);
}