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

场景:

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

相关推荐
佛系打工仔38 分钟前
绘制K线第二章:背景网格绘制
android·前端·架构
计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue医院设备管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
明天好,会的2 小时前
分形生成实验(五):人机协同破局--30万token揭示Actix-web状态管理的微妙边界
运维·服务器·前端
C_心欲无痕3 小时前
nginx - alias 和 root 的区别详解
运维·前端·nginx
北辰alk3 小时前
Vue 路由信息获取全攻略:8 种方法深度解析
vue.js
北辰alk3 小时前
Vue 三剑客:组件、插件、插槽的深度辨析
vue.js
北辰alk3 小时前
Vue Watch 立即执行:5 种初始化调用方案全解析
vue.js
北辰alk3 小时前
Vue 组件模板的 7 种定义方式:从基础到高级的完整指南
vue.js
北辰alk3 小时前
深入理解 Vue 生命周期:created 与 mounted 的核心差异与实战指南
vue.js