输入一个字符触发三次input事件,你不知道的JavaScript composition Event

情景描述

  在做项目时第三方接口返回内容为按某固定分割符拼接的一个长的字符串,需要自己拆分每一项。正好最近在学Vue3,为了方便看每项内容打算写个拆分的前端脚本。

事件描述

  脚本打算不使用确定按钮完成拆分,用input事件完成自动拆分。在测试input事件的时候,突然发现一个神奇的现象。输入一个数字1结果调用了三次方法,当时整个人都懵了。发生了什么???
问题现象
问题现象

问题描述

  为了解决这一问题各种上网搜索办法,又各种测试,最后发现问题:我用了中文输入法,切换到英文输入法就不会这样。然后又是一脸懵,这和中英文输入法有关系???这算是我这个小脚本的bug了,得治,继续上网搜。

解决问题

  经过查阅资料,了解到如下几个事件compositionstart,compositionupdate ,compositionend

  1.compositionstart:文本合成系统如 input method editor(即输入法编辑器)开始新的输入合成时会触发 compositionstart 事件(摘自MDN

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
input输入框停止输入触发事件可以通过监听input元素的input事件来实现。当用户在input输入框中输入文字时,每输入一个字符都会触发一次input事件。我们可以通过设置一个计时器,在用户停止输入一段时间后触发所需的事件。 具体的实现步骤如下: 1. 监听输入框的input事件,当该事件触发时,执行相应的处理函数。 2. 在处理函数中,首先清除之前设置的计时器(如果有),然后设置一个新的计时器。 3. 在计时器的回调函数中执行需要触发事件。在这个例子中,我们可以弹出一个提示框作为示例。 下面是一个简单的实现示例: ```html <!DOCTYPE html> <html> <head> <title>Input Stop Event</title> </head> <body> <input id="myInput" type="text" /> <script> let timer; const inputElement = document.getElementById('myInput'); inputElement.addEventListener('input', function() { clearTimeout(timer); // 清除计时器 timer = setTimeout(() => { alert('输入停止!'); // 在用户停止输入0.5秒后触发事件 }, 500); }); </script> </body> </html> ``` 在以上示例中,我们监听了id为"myInput"的input元素的input事件,并在事件处理函数中设置了一个计时器。当用户输入文字时,每次input事件触发时,都会清除之前设置的计时器,并重新设置一个新的计时器。当用户停止输入0.5秒后,计时器的回调函数会被执行,触发一个提示框弹出,表示输入已经停止。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值