代码之家  ›  专栏  ›  技术社区  ›  brentonstrine

如何将javascript键码转换为charCode?

  •  1
  • brentonstrine  · 技术社区  · 5 年前

    键盘事件 ,则会为按下的键提供一个代码, 相反,它是键盘键的代码。有时键码恰好与ASCII/UTF-8码匹配,有时则不匹配。

    e.keyCode e.which )获取相应的ASCII或UTF-8字符码?

    Here's a working JSFiddle

    document.addEventListener("keyup", function(e) {
    
      document.querySelector(".key").innerHTML = e.key;
      document.querySelector(".keyCode").innerHTML = e.keyCode;
      document.querySelector(".UTF").innerHTML = String.fromCharCode(event.keyCode);
    
    });
    code {
      background-color: #e2aec8ab;
      border: solid 1px gray;
      border-radius: 3px;
      padding: 0 .5em;
      min-height: 1em;
      min-width: .2em;
      margin: 0 .1em;
    }
    
    .output {
      margin: 2em;
      border: solid 1px lightgray;
      border-radius: 3px;
      background-color: rgba(200, 250, 230, .3);
      padding: 1em;
    }
    Type here. Try some alpha letters as well as special keys like <code>`</code>
    <code>-</code>
    <code>=</code>
    <code>[</code>
    <code>]</code>
    <code>[ENTER]</code>
    <code>;</code>
    <code>'</code>
    
    
    <div class="output">
      You typed <code class="key"></code> which is Javascript <b></b>keyCode</b> <code class="keyCode"></code>, in UTF that would be <code class="UTF"></code>
    </div>

    两个例子:

    1. 类型 2 在键盘上
    2. event.keyCode 是50。
    3. UTF字符50是 ( DIGIT TWO

    但是:

    1. 类型 [
    2. 捕捉事件。 事件.键码 是219。
    3. UTF字符219是 Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX )
    4. 我希望事件包含的字符码是 91 LEFT SQUARE BRACKET .

    如何转换Javascript键码(例如。 219 )转换成UTF-8字符码(例如。 91

    0 回复  |  直到 5 年前
        1
  •  4
  •   John Pavek    5 年前

    我只想说,这个问题成了一个有趣的学习冒险。但是。。。。

    您正在使用不推荐使用的API。

    事实证明 KeyboardEvent.keyCode 已经被否决了一段时间。因为它使用ASCII的十进制版本。要使用的正确代码实际上是 event.Code

    要获得ascii码,只需使用 event.key.charCodeAt() S event.location 以确定该键是否为特殊控制键。零是标准键,1-3是特殊位置(我想)。

    document.addEventListener("keyup", function(e) {
    
      document.querySelector(".key").innerHTML = e.key;
      document.querySelector(".keyCode").innerHTML = e.code;
      document.querySelector(".ascii").innerHTML = e.key.charCodeAt()
      document.querySelector(".UTF").innerHTML = String.fromCharCode(event.key.charCodeAt());
    
    });
    code {
      background-color: #e2aec8ab;
      ;
      border: solid 1px gray;
      border-radius: 3px;
      padding: 0 .5em;
      min-height: 1em;
      min-width: .2em;
      margin: 0 .1em;
    }
    
    .output {
      margin: 2em;
      border: solid 1px lightgray;
      border-radius: 3px;
      background-color: rgba(200, 250, 230, .3);
      padding: 1em;
    }
    Type here. Try some alpha letters as well as special keys like <code>`</code>
    <code>-</code>
    <code>=</code>
    <code>[</code>
    <code>]</code>
    <code>[ENTER]</code>
    <code>;</code>
    <code>'</code>
    
    
    <div class="output">
      You typed <code class="key"></code> which is Javascript <b>keyCode</b> <code class="keyCode"></code>, in ASCII that would be <code class="ascii"> </code> which is <code class="UTF"></code>
    </div>