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

场景:

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 已经对中文输入进行了处理,所以我们不用额外去处理。

相关推荐
秋田君2 分钟前
Vue3 + VitePress 搭建部署组件库文档平台(结合 Element Plus 与 Arco Design Vue)—— 超详细图文教程
前端·vue.js·arco design
code_Bo3 分钟前
前端使用snapdom报错问题
前端·javascript·vue.js
勤奋菲菲15 分钟前
Egg.js 完全指南:企业级 Node.js 应用框架
开发语言·javascript·node.js
一壶浊酒..23 分钟前
什么是AJAX
前端·javascript·ajax
智能化咨询29 分钟前
基于Spring Boot + Vue 3的乡村振兴综合服务平台性能优化与扩展实践
vue.js·spring boot·性能优化
fruge3651 小时前
从零到一:我在 Rokid Glasses 上“画”出一个远程协作系统
前端
BumBle1 小时前
高频扫码场景下的去重与接口调用方案
前端·javascript
Mapmost1 小时前
半透明模型渲染全白?Mapmost Studio一招搞定
前端
SpiderPex1 小时前
JavaWeb登录模块完整实现解析:从前端点击到后端验证的全流程
前端
Qhappy1 小时前
某里连线九宫格图片wasm解密&识别
javascript