首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在javascript中,keyup和keydown的工作有什么区别?

在javascript中,keyup和keydown的工作有什么区别?
EN

Stack Overflow用户
提问于 2019-07-05 16:00:31
回答 2查看 1.9K关注 0票数 4

我一直在学习javascript中的keypress事件,我想知道为什么在keyupkeydown中得到不同的结果。就像。如果我用id分配一个输入,并通过它传递一个addEventListnerreffer代码,那么如果我在keydown事件中输入"1234“,就会得到输出为"123”,而keyup事件不会出现这个问题。

简而言之,我只想问,为什么在keydown的情况下,字符的no (输入输入)不等于no。显示在输出中的字符。这种情况不会发生在keyup中,我应该使用哪一种?

代码语言:javascript
运行
复制
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>
   <input type="text" name="" id="in" placeholder="enter a value" style="border: solid; margin: 15px; padding: 5px">
<div style="border: 5px solid black; margin:10px; width:30vw; height: 15vh">
      Keydown result: <div id="keydown"></div>
</div>
<div style="border: 5px solid black; margin:10px; width:30vw; height: 15vh">
       Keyup result:<div id="keyup"></div>
</div>
</body>
</html>

<script>
document.getElementById('in').addEventListener('keydown', runevent);

function runevent(e){

   document.getElementById('keydown').innerText = e.target.value;

}

document.getElementById('in').addEventListener('keyup', runevent1);

function runevent1(e){

   document.getElementById('keyup').innerText = e.target.value;

}


</script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-05 16:03:41

简单地说,我只想问,为什么在按下键时,字符的no (输入输入)不等于no。显示在输出中的字符。这不发生在键盘和我应该使用哪一个?

如果您对字符感兴趣,如果希望处理事件生成的字符,请使用keypress;如果只想使用最新的字段值,则使用input

  • keydown是在字符被添加到字段之前触发的,这就是为什么在输入1234之后没有看到4的原因。(如果阻止keydown的默认操作,则不会添加字符。)
  • beforeinput是在输入发生更改之前触发的(例如,如果更改的原因是按键,则在字符被删除之前)。
  • 在添加字符之前还会触发keypress注: keypress被否决,请参见beforeinputkeydown
  • input是在添加字符之后触发的。
  • keyup是在添加字符之后触发的。

这可能会帮助您查看顺序:

代码语言:javascript
运行
复制
const input = document.getElementById("field");
const output = document.getElementById("output");

function handleEvent(e) {
    output.insertAdjacentHTML("beforeend",
       "<pre>" + e.type + ": " + input.value + "</pre>"
    );
}

input.addEventListener("keydown", handleEvent);
input.addEventListener("keyup", handleEvent);
input.addEventListener("keypress", handleEvent);
input.addEventListener("input", handleEvent);
代码语言:javascript
运行
复制
#output pre {
    margin-top: 0;
    margin-bottom: 0;
}
代码语言:javascript
运行
复制
<input type="text" id="field">
<div id="output"></div>

票数 4
EN

Stack Overflow用户

发布于 2019-07-05 16:06:03

KeyUp事件是在用户释放键时触发的。

KeyDown事件是在用户按下键时触发的。

当按下键时发生按键事件,紧接着是键按事件。然后,在释放密钥时生成keyup事件。 为了理解按键和按键的区别,理解“字符”和“键”之间的区别是有用的。“键”是计算机键盘上的物理按钮,而“字符”是按下按钮输入的符号。理论上,按键和按键事件表示按下或释放的键(),而按键事件( keypress )表示正在键入的字符。这个理论的实现并不是在所有的浏览器中都是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56906229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档