Javascript按键事件和e.keycode

Javascript按键事件和e.keycode,javascript,html,dom-events,keypress,keycode,Javascript,Html,Dom Events,Keypress,Keycode,我有一个代码,当用户在文本输入中键入时,该代码将更新剩余的字符数。使用按键事件触发该代码。问题是只有在按下2键后才会触发代码。为什么会这样 我有一个代码来显示ASCII代码的键,但字符总是显示8,并且在我按backspace时显示。以及如何使用String.fromCharCode(event.keycode};方法 为什么将事件参数添加到函数? e.keycode如何知道它正在显示用户输入的keycode 代码示例 HTML <div id="page"> <h1>

我有一个代码,当用户在
文本输入中键入时,该代码将更新剩余的字符数。使用
按键
事件触发该代码。问题是只有在按下2
键后才会触发代码。为什么会这样

  • 我有一个代码来显示ASCII代码的键,但字符总是显示8,并且在我按backspace时显示。以及如何使用
    String.fromCharCode(event.keycode};
    方法

  • 为什么将
    事件
    参数添加到
    函数
    e.keycode
    如何知道它正在显示用户输入的
    keycode

  • 代码示例

    HTML

    <div id="page">
      <h1>List King</h1>
      <form id="messageForm">
        <h2>My profile</h2>
        <textarea id="message"></textarea>
        <div id="charactersLeft">180 characters</div>
        <div id="lastKey"></div>
      </form>
    </div>
    
    1) 使用“keyup”代替“keypress”

    2) lastkey.textContent='ASCII码中的最后一个键:'+String.fromCharCode(e.keyCode)

    3) 我对它了解不多。添加事件参数以捕获激发的事件。它具有激发事件的所有属性,例如对于“keyup”,它具有“charcode”、“keycode”、“key”等

  • 按键
    事件在更新输入值之前触发,这就是计数器不是最新的原因。如果您不需要keyCode,我建议您收听
    输入
    事件。您还可以收听
    keyup
    (但更新不会直接进行)或
    keypress
    keyup
    的组合(从“”,我更新了正确答案)
    • 实际上,按下backspace键时,
      keypress
      事件似乎不会被触发。尽管如此,忽略“静音”键(“backspace”、“shift”、“command”等)的另一种解决方案是侦听“input”事件(但您将无法访问
      event.keyCode
      )。否则,当keyCode不相关时,您也可以忽略代码
    • 关于,只需使用
      String.fromCharCode(event.keyCode)
      即可获得keyCode的“人类”等价物
  • 传递给函数的是一个对象,包含有关此给定事件的所有信息,包括按下的键

  • 您的答案有效,请回答我的另外两个问题。
    keyup
    当您松开钥匙时会触发,这样当您按下时计数器不会更新。第一个问题不是问题,它与
    keyup
    一起工作。您是否有特殊原因。不要说它来自其他地方,在代码中显示它。@gabinI将代码复制并粘贴到一个文件夹中。打开控制台并键入输入。如您所见,
    keypress
    在您每次按键时都会触发。我键入一个未触发的字符,然后键入下一个字符。从某种意义上说,我键入一个字符,然后键入另一个字符(因此我键入了两个字符),在键入第二个字符后,事件将触发并显示(180-1个字符)179个字符,而不是178个字符。实际上,按键事件在输入值更新之前触发。如果您不需要密钥码,我建议您收听“输入”事件。否则,您可以收听“keyup”,但更新不会是“直接的”。还有来自“”的其他解决方案(我已根据您的需要进行了更新)。ASCII码不更新为字母,请说什么
    var el;                                                    // Declare variables
    
    function charCount(e) {                                    // Declare function
      var textEntered, charDisplay, counter, lastkey;          // Declare variables
      textEntered = document.getElementById('message').value;  // User's text
      charDisplay = document.getElementById('charactersLeft'); // Counter element
      counter = (180 - (textEntered.length));                  // Num of chars left
      charDisplay.textContent = counter;                       // Show chars left
    
      lastkey = document.getElementById('lastKey');            // Get last key used
      lastkey.textContent = 'Last key in ASCII code: ' + e.keyCode; // Create msg 
    }
    
    el = document.getElementById('message');                   // Get msg element
    el.addEventListener('keypress', charCount, false);         // keypress -call charCount()