中文输入法导致的高频事件

场景:

javascript 复制代码
input.addEventListener('input', (e) => {
  console.log(e.target.value)
});

当给一个输入框绑定了 input 事件,输入法切换到中文正在拼写的过程中也会触发 input 事件。

解决办法:

在中文拼写开始和结束的时候分别会触发 compositionstart 和 compositionend 事件,在 compositionstart 和 compositionend 之间,input 事件回调直接退出。

javascript 复制代码
const input = document.querySelector('.inp');
let isComposition = false;

function search() {
  console.log(input.value)
}

input.addEventListener('input', (e) => {
  if (isComposition) return;
  search();
});

// 输入法组合开始事件
input.addEventListener('compositionstart', () => {
  console.log('中文输入开始')
  isComposition = true;
});

// 输入法组合结束事件
input.addEventListener('compositionend', () => {
  console.log('中文输入结束')
  isComposition = false;
  search();
});

Element UI 的 el-input 已经对中文输入进行了处理,所以我们不用额外去处理。

相关推荐
YF021116 分钟前
Frida for MacBook/Android 安装配置
android·前端
狂炫冰美式39 分钟前
3天,1人,从0到付费产品:AI时代个人开发者的生存指南
前端·人工智能·后端
一千柯橘43 分钟前
从摄影新手到三维光影师:Three.js 核心要素的故事
前端·three.js
南囝coding1 小时前
2025年CSS新特性大盘点
前端·css
c***V3231 小时前
前端框架对比:10个主流框架优缺点分析
前端·前端框架
湖边看客1 小时前
antd x6 + vue3
开发语言·javascript·vue.js
栀秋6661 小时前
当我把 proto 打印出来那一刻,我懂了JS的原型链
前端·javascript
小离a_a1 小时前
flex垂直布局,容器间距相等
开发语言·javascript·ecmascript
Cassie燁2 小时前
element-plus源码解读1——useNamespace
前端·vue.js
一直在学习的小白~2 小时前
npm发布脚手架流程
前端·npm·node.js