【日常记录】【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、参考

相关推荐
Nan_Shu_6143 小时前
学习:ES6(2)
前端·学习·es6
命运之光6 小时前
【最新】ChromeDriver最新版本下载安装教程,ChromeDriver版本与Chrome不匹配问题
前端·chrome
星离~8 小时前
Vue响应式原理详解:从零实现一个迷你Vue
前端·javascript·vue.js
梦6509 小时前
React 简介
前端·react.js·前端框架
一只小阿乐9 小时前
react 中的判断显示
前端·javascript·vue.js·react.js·react
光影少年9 小时前
useMemo 和 React.memo区别
前端·react.js·前端框架
小沐°9 小时前
React-页码组件
前端·javascript·react.js
零一科技9 小时前
Vue3学习第三课: ref 与 reactive 选择指南
前端·vue.js
余杭子曰9 小时前
播放状态与播放序列的关系(999篇一线博客第107篇)
前端
e***U82011 小时前
前端路由懒加载实现,React.lazy与Suspense
前端·react.js·前端框架