第一次触发事件时,按键事件不会记录输入值

2023-11-25

第一次keypress事件触发时,即使输入有值,它也会记录一个空输入值。第二次它记录该值,但与输入值相比晚了一次击键。您可以在下一个示例中检查此行为:

document.addEventListener('DOMContentLoaded', () =>
{
    const input = document.querySelector('input');

    input.addEventListener('keypress', e =>
    {
        console.log(e.target.value);
    });
});
<input type="text"/>

然而,下一个解决方法使它工作,即使我传递0ms.

document.addEventListener('DOMContentLoaded', () =>
{
    const input = document.querySelector('input');

    input.addEventListener('keypress', e =>
    {
        setTimeout(() => console.log(e.target.value), 0);
    });
});
<input type="text"/>

为什么会发生这种情况?


当您按key第一次,分配给input is empty当时的keypress事件发生,然后该字符被添加到输入中,但过了一会儿。这同样适用于未来keypress事件的价值input您读到的是之前的上一篇input changes。另外,如果您阅读MDN有关于按键被删除的警告。因此,相反,您可能想听keyup事件如下一个示例所示:

const input = document.querySelector('input');

input.addEventListener('keyup', e =>
{
    console.log(e.target.value);
});
.as-console {background-color:black !important; color:lime;}
<input type="text" id="input">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一次触发事件时,按键事件不会记录输入值 的相关文章

  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • Firefox 中的 jQuery 表单提交

    请帮我解决一个问题 我有这个代码 用于通过锚点提交表单
  • jQuery 插件与小部件

    几个月前 我开始使用 jQuery 插件进行一些实验 我在互联网上找到了一些教程 然后开始整理一些东西 几天前 我需要构建自己的 插件 并回到我的旧项目 当我试图在互联网上找到更多信息时 我偶然发现了这些称为小部件的新 东西 据我了解 我应
  • 旋转嵌套 SVG

    我在用SVG js http svgjs com并尝试使用 SVG 进行一些操作 我以前使用过 canvas 但我对其生成的图像质量非常失望 因此我决定使用纯 SVG 我设法将所有内容都改为纯 SVG 方法 除了一件事 旋转 我无法让它发挥
  • 在复选框内映射复选框 ReactJS

    我有一个函数 一旦主复选框被选中 就会触发子复选框 并且所有这些复选框都是从 JSON 映射的 主复选框 最高级别 及其下面的所有子复选框 第二级别 都会在单击时显示 并且效果很好 我想要显示的是单击时主复选框 第三级别 的子复选框2 级项
  • 数字和数字对象有什么区别?

    存储在普通变量中的数字有什么区别 var foo 5 和一个数字对象 var bar new Number 5 数字对象可以用来做什么 A Number对象包含一些有用的方法和属性 例如 数字对象方法 Method Description
  • 在 TypeScript 中迭代对象的键和值

    在纯 JavaScript 中 我们可以迭代对象属性和值 如下所示 const values Object keys obj map key gt obj key 在 TypeScript 中 此语法是错误的 因为 TS 编译器显示以下消息
  • 在 javascript 中循环 html 复选框

    实际上我有一个关于如何在java脚本中循环复选框的问题 假设我在jsp循环中创建了html复选框 我希望在javascript中对这些复选框进行验证 我应该怎么做 通常对于单个对象 我们可以执行 window document form c
  • jQuery 显示隐藏左侧滑动面板

    我希望在单击按钮时面板从浏览器的左边缘滑动 并在单击同一按钮 切换 时隐藏面板 Html div class panel div a href class slider arrow show raquo a CSS panel width
  • 查找第一个可滚动父级

    我遇到这种情况 需要将元素滚动到视口中 问题是我不知道哪个元素是可滚动的 例如 在纵向中 主体是可滚动的 而在横向中 它是另一个元素 还有更多情况会更改可滚动元素 现在的问题是 给定一个需要滚动到视口中的元素 找到其第一个可滚动父元素的最佳
  • React Native 中循环 Json 并显示

    How do I go about looping the result i retrieved from Json render function console log this state list contents
  • 在 Photoshop 中使用 javascript 修改文本项的内容

    我知道如何使用这样的代码在 Photoshop 中设置文本项的内容 var al doc activeLayer if al kind LayerKind TEXT get the textItem var ti al textItem c
  • 如何检查浏览器中消失的元素?

    How can I inspect an element which disappears when my mouse moves away 我不知道它的 ID 类别或其他任何信息 但想检查它 我尝试过的解决方案 在控制台内运行 jQuer
  • 返回不在函数中

    Firebug 报告 返回不在函数中 错误 没有位置 好吧 第 1 行什么都没有 我怎样才能找到这个错误的根源 return not in function Break on this error return 0 javascript r
  • Angular CDK Overlay,更改默认覆盖容器

    有没有办法改变OverlayContainer 我创建了一个工具提示组件 但有时我想将叠加层附加到特定元素 默认情况下 叠加层附加到文档正文 以下是我创建叠加层的方法 private initOverlay void const posit
  • 从选择控件 html 复制所选项目的文本

    我有一个带有预定义值的选择控件 我希望我的用户能够使用 CTRL C 复制所选项目的文本 我不希望他们能够更改项目的文本 只需用鼠标 键盘选择它 这是一个显示问题的小提琴 我无法选择所选项目的文本 http jsfiddle net 5C3
  • 通过 Javascript 填充 ReactJS HTML 表单

    我正在开发一个应用程序 在打开第 3 方网站后 我可以在浏览器上下文中运行我自己的 Javascript 作为一个基于reactjs构建并具有登录表单的示例网站 您可以参考此链接 我正在尝试在reactjs生成的表单中填写用户名和密码 但是
  • 解析函数是否异步传递给 Promise 执行器?

    我有以下代码 function myPromiseFunc return new Promise resolve gt resolve Promise resolve 123 据我们所知Promise resolve方法立即用普通值解析 P
  • 网站可以检测您何时将 Selenium 与 chromedriver 结合使用吗?

    我一直在使用 Chromedriver 测试 Selenium 我注意到有些页面可以检测到您正在使用 Selenium 即使根本没有自动化 即使我只是通过 Selenium 使用 Chrome 手动浏览 Xephyr https en wi
  • localStorage 获取 NULL?

    我不知道为什么 因为我之前已经这样做过并且工作正常 我认为这可能是因为浏览器问题 错误 localStorage setItem foo bar alert localStorage getItem foo 我使用的是 Firefox 3

随机推荐

  • 在ggplot2中标记特定点

    我正在尝试在 ggplot2 中的特定散点图中标记各个兴趣点 我的数据以包含多列的 csv 文件形式存在 Gene chr start stop A B C D E APOBEC3G chr22 39472992 39483773 97 0
  • 尽管安装了 gem,但仍找不到 gem

    我已经构建了我的第一个 gem 但我似乎无法正确安装它 我可以发出命令 sudo gem install ceilingfish toto 产生输出 Successfully installed ceilingfish toto 0 3 6
  • 当Python对象被删除时,Ctypes结构和指针是否自动释放内存?

    使用 Python CType 时 存在允许您在 Python 端克隆 C 结构的结构 以及从内存地址值创建复杂 Python 对象并可用于通过引用来回传递对象的 POINTERS 对象 C代码 我在文档或其他地方找不到的是 当包含从 C
  • IE8 浏览器不支持 IndexOf

    我的应用程序中有级联下拉菜单 使用 jquery 级联 现在我的问题是它可以与 IE9 Firefox Opera 和 Safari 顺利工作 但不能与 IE7 IE8 等任何浏览器一起工作 我浏览了这个问题 发现错误是由于我的jquery
  • Firebase 存储覆盖文件

    我的程序中有一个小错误 我的应用程序中有 firebase 存储 我想让用户将图像上传到存储 问题是当用户上传图像然后尝试上传另一张图像时 该程序会覆盖之前上传的图像 我想要的是当用户想要上传另一张图像时避免 覆盖 并将两个图像保存在不同的
  • 从 NSArray 获取字符串值

    我有一个NSArrayController当我得到selectedObjects并创建一个 NSString 其值为valueForKey Name 它返回 This is still a work in progress 我想要的只是其中
  • 如何在不重新组合的情况下获得精确的尺寸?

    我需要可组合项的大小来绘制动态线条 但我不想通过以下方式获取大小 var size by remember mutableStateOf IntSize Zero Modifier onSizeChanged size it or Modi
  • Android锁屏API?

    我见过两个可以自定义锁屏的应用程序 Widget locker slidescreen 我们真的有一个 API 可以让我们自定义锁屏吗 如果不是的话 有什么技巧呢 请参阅 mylockforandroid 安卓版的我的锁 它是 GPL 的
  • 将文件分块发送到 HttpHandler

    我正在尝试将文件分块发送到 HttpHandler 但是当我在 HttpContext 中收到请求时 inputStream 为空 所以 a 发送时我不确定我的 HttpWebRequest 是否有效 b 在接收时我不确定如何检索 Http
  • 当前目录中包含多个 jar 文件的 javac 类路径选项导致错误

    环境 Windows 7 Java 6 尝试使用 cp 选项编译 java 文件 该文件使用当前目录中的单个 jar 文件以及当前目录中的一些其他 jar 文件 javac cp jar MyFile java 不起作用 javac cp
  • 未经授权的请求后抑制 NTLM 对话框

    在最近的一个共享点项目中 我实现了一个身份验证 Web 部件 它应该取代 NTLM 身份验证对话框 只要用户提供有效的凭据 它就可以正常工作 每当用户提供无效凭据时 Internet Explorer 中就会弹出 NTLM 对话框 我的 J
  • 获取文件的创建日期/时间

    这似乎是一个非常简单的问题 但我无法在网上找到明确的答案 如何通过 Java 的文件管理器获取文件创建的日期 时间 除了文件名之外 我还能获得有关文件 属性 的哪些信息 我不确定如何使用 Java 6 及更低版本获得它 使用 Java 7
  • 零除错误 (Python)

    我收到一些图像的零除错误 尽管其中很多都工作得很好 这是代码 image skimage io imread test png False image gray skimage io imread test png True blurred
  • 为什么模板只能在头文件中实现?

    引用自C 标准库 教程和手册 目前使用模板的唯一可移植方法是通过使用内联函数在头文件中实现它们 为什么是这样 澄清 头文件不是only便携式解决方案 但它们是最方便的便携式解决方案 警告 它是not有必要将实现放入头文件中 请参阅本答案末尾
  • 无法在 LazyColumn 中使用屏幕底部的 TextField

    我有这个代码 setContent val items mutableListOf
  • 迁移到 AndroidX

    好吧 我开始从一个一年前的项目迁移到 AndroidX 此后一直没有动过 但我在资源和 gradle 构建方面遇到了问题 我完全迷失了新的命名空间 我更改了其中一些命名空间 我升级了 AndroidStudio 告诉我的所有内容 但仍然无法
  • sdkman安装的`sdk`命令在哪里

    我刚刚安装sdkman用于在我的机器 MacOS 上安装 grails 当我跑步时which sdk命令我没有得到任何输出 但是当我运行sdk help命令 shell 能够解析它并给出正确的输出 我检查了 PATH 环境变量中提到的所有目
  • React Native - 如何从 ScrollView 获取视图的 Y 偏移值?

    我正在尝试获取视图的滚动位置 但价值为页面的 Y 偏移量这与视图的位置无关 滚动视图层次结构
  • 在 Android 模拟器中切换到横向模式

    这可能是一个很容易回答的问题 但在搜索文档和谷歌几个小时后我自己找不到解决方案 我将 Android 应用程序的方向设置为landscape in the AndroidManifest xml file android screenOri
  • 第一次触发事件时,按键事件不会记录输入值

    第一次keypress事件触发时 即使输入有值 它也会记录一个空输入值 第二次它记录该值 但与输入值相比晚了一次击键 您可以在下一个示例中检查此行为 document addEventListener DOMContentLoaded gt