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

相关推荐
夕水17 小时前
10个互动关卡带你轻松掌握js的位运算
前端·javascript
复苏季风17 小时前
为什么Vite动态加载图片报错? 动态资源引入的那些事儿
前端·vue.js·架构
sp4217 小时前
静态网站生成利器 Eleventy
前端
阿聪_17 小时前
React.ComponentType 类型使用
前端
aiwery17 小时前
理解 JavaScript 中的 Iterator、Generator、Promise 与 async/await
前端·面试
K仔17 小时前
什么是DOM事件模型
前端
熊猫片沃子17 小时前
新手必避的 Vue 基础坑:从数据绑定到事件处理的常见错误与解决方案
前端·vue.js
lichenyang45317 小时前
UniApp 实现搜索页逻辑详解
前端
怪可爱的地球人17 小时前
处理“文本搜索和替换” 的工具-RegExp
前端
公众号:重生之成为赛博女保安17 小时前
一款基于selenium的前端验证码绕过爆破工具
前端·selenium·测试工具