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