【日常记录】【JS】input标签输入中文导致value值的不正确

文章目录

1、描述

input标签中,输入中文时,如若监听 input 事件,会得到意想不到的结果,如下面的图所示

2、解决方案

可以用到 compositionstart 监听输入中文开始的事件,compositionend 监听输入中文结束的事件

html 复制代码
  <input type="text" id="abc" autocomplete="off">
  <script>
    let inputEl = document.querySelector('#abc')
    let isChinese = false;
    inputEl.addEventListener('input', (e) => {
      if (!isChinese) {
        handleSearch()
      }
    })


    inputEl.addEventListener('compositionstart', (e) => {
      isChinese = true
      console.log('开始输入中文');
    })
    inputEl.addEventListener('compositionend', (e) => {
      isChinese = false
      console.log('结束输入中文');
      handleSearch()

    })


    function handleSearch() {
      console.log(`搜索 ${inputEl.value}`);
    }
  </script>

3、参考

相关推荐
Am1nnn3 分钟前
【Pinia】Pinia和Vuex对比
前端·javascript·vue.js
可爱小仙子7 分钟前
ios苹果系统,js 滑动屏幕、锚定无效
前端·javascript·ios
大得36910 分钟前
react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架
前端·javascript·react.js
段旭涛16 分钟前
uniapp 设置手机不息屏
前端·uni-app
古夕18 分钟前
Promise A+ 规范解读
前端·javascript
古夕18 分钟前
Promise 基础概念与实践详解
前端·javascript
SameX19 分钟前
HarmonyOS Next 枚举递归定义与表达式树建模:从理论到实践
前端
SameX21 分钟前
HarmonyOS Next自定义枚举与标准库的协同:Option与Result
前端
用户58061393930021 分钟前
深度解析:解决大型 Git 仓库克隆失败的完整指南
前端
白瓷梅子汤22 分钟前
跟着官方示例学习 @tanStack-table --- Column Ordering
前端·react.js