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

场景:

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

相关推荐
空中海3 小时前
第七章:vue工程化与构建工具
前端·javascript·vue.js
zhensherlock3 小时前
Protocol Launcher 系列:Trello 看板管理的协议自动化
前端·javascript·typescript·node.js·自动化·github·js
zhuà!3 小时前
element的el-form提交校验没反应问题
前端·elementui
龙猫里的小梅啊4 小时前
CSS(一)CSS基础语法与样式引入
前端·css
小码哥_常4 小时前
从0到1,开启Android音视频开发之旅
前端
渔舟小调4 小时前
P19 | 前端加密通信层 pikachuNetwork.js 完整实现
开发语言·前端·javascript
qq_12084093714 小时前
Three.js 工程向:Draw Call 预算治理与渲染批处理实践
前端·javascript
旷世奇才李先生6 小时前
Vue3\+Vite\+Pinia实战:企业级后台管理系统完整实现(附源码)
vue.js
不会聊天真君6477 小时前
JavaScript基础语法(Web前端开发笔记第三期)
前端·javascript·笔记