如何找出按下的字符键?

xXx*_*xXx 104 javascript keypress javascript-events

我想知道在纯javascript中以跨浏览器兼容的方式按下了什么字符键.

Coy*_*yod 147

"清除"JavaScript:

<script type="text/javascript">
  function myKeyPress(e){
    var keynum;

    if(window.event) { // IE                    
      keynum = e.keyCode;
    } else if(e.which){ // Netscape/Firefox/Opera                   
      keynum = e.which;
    }

    alert(String.fromCharCode(keynum));
  }
</script>

<form>
  <input type="text" onkeypress="return myKeyPress(event)" />
</form>
Run Code Online (Sandbox Code Playgroud)

JQuery的:

$(document).keypress(function(event){
  alert(String.fromCharCode(event.which)); 
});
Run Code Online (Sandbox Code Playgroud)

  • 这适用于字母字符,但点/刹车和其他typogtaphic符号怎么样? (6认同)
  • @VoVaVc:它也适用于那些人.关键是使用`keypress`事件,它给你一个字符代码,而不是给你一个密钥代码的`keyup`或`keydown`. (5认同)
  • 所有主流浏览器现在都支持@AndyMercer密钥:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key#Browser_compatibility (5认同)
  • @aljgom,`e.key`仍然没有完整的浏览器支持. (2认同)
  • 按键事件似乎已被弃用 https://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress (2认同)

Tim*_*own 32

这里有一百万个重复的问题,但无论如何还是会再次出现:

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var charCode = evt.keyCode || evt.which;
    var charStr = String.fromCharCode(charCode);
    alert(charStr);
};
Run Code Online (Sandbox Code Playgroud)

我见过的关键事件的最佳参考是http://unixpapa.com/js/key.html.


Gib*_*olt 19

更新,更清洁:使用event.key.没有更多的任意数字代码!

node.addEventListener('keydown', function(event) {
    const key = event.key; // "a", "1", "Shift", etc.
});
Run Code Online (Sandbox Code Playgroud)

如果您想确保只输入单个字符,请检查key.length === 1,或者它是您期望的字符之一.

Mozilla文档

支持的浏览器


lew*_*dev 10

尝试:

<table>
  <tr>
    <td>Key:</td>
    <td id="key"></td>
  </tr>
  <tr>
    <td>Key Code:</td>
    <td id="keyCode"></td>
  </tr>
  <tr>
    <td>Event Code:</td>
    <td id="eventCode"></td>
  </tr>
</table>
<script type="text/javascript">
  window.addEventListener("keydown", function(e) {
    //tested in IE/Chrome/Firefox
    document.getElementById("key").innerHTML = e.key;
    document.getElementById("keyCode").innerHTML = e.keyCode;
    document.getElementById("eventCode").innerHTML = e.code;
  })
</script>
Run Code Online (Sandbox Code Playgroud)

*注意:这适用于“运行代码片段”

这个网站和我上面的代码一样:Keycode.info