前端开发攻略---在输入框中输入中文但是还没选中的时候,搜索事件依然存在;中文输入法导致的高频事件。

news2025/2/6 13:52:38

1、演示

解决前

解决后

2、输入框事件介绍

  • compositionstart事件在用户开始使用输入法输入时触发。这意味着用户正在进行组合输入,比如在中文输入法中,用户可能正在输入一个多个字符的词语。在这个阶段,输入框的内容可能还没有完全确定,因为用户可能在继续输入中。这个事件通常用于在输入法输入过程中进行一些特定的操作或者提供反馈。

  • compositionend事件在用户完成使用输入法输入时触发。这表示用户已经完成了组合输入,输入框的内容已经确定。在这个事件触发后,可以认为输入框中的内容是最终确定的。这个事件通常用于在输入法输入结束后执行一些操作,比如验证输入、提交表单等。

3、解决后的代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <input type="text" />
  </body>
  <script>
    // 获取文档中的<input>元素
    const ipt = document.querySelector('input')
    // 定义一个搜索函数,用于输出搜索关键字到控制台
    function search() {
      console.log('搜索关键字:', ipt.value)
    }
    // 初始化一个变量用于跟踪输入是否在输入法组合状态中
    let isComposition = true
    // 监听<input>元素的input事件
    ipt.addEventListener('input', function () {
      // 在非输入法组合状态下触发搜索函数
      if (isComposition) {
        search()
      }
    })
    // 监听<input>元素的compositionstart事件,表示输入法开始组合文本
    ipt.addEventListener('compositionstart', function () {
      // 将isComposition标志设置为false,表示当前处于输入法组合状态
      isComposition = false
    })
    // 监听<input>元素的compositionend事件,表示输入法结束组合文本
    ipt.addEventListener('compositionend', function () {
      // 将isComposition标志设置为true,表示输入法组合状态结束
      // 然后触发搜索函数,因为输入法组合状态结束,输入文本已确认
      isComposition = true
      search()
    })
  </script>
</html>

4、代码解析 

  1. 获取页面中的 <input> 元素,并将其存储在变量 ipt 中。
  2. 定义了一个名为 search 的函数,该函数用于在控制台输出 <input> 元素当前的值,即搜索关键字。
  3. 初始化了一个名为 isComposition 的布尔变量,用于跟踪输入是否在输入法组合状态中。
  4. 通过监听 <input> 元素的 input 事件,当用户输入文本时,根据 isComposition 的状态来触发搜索函数。只有在非输入法组合状态下(即 isComposition 为 true)才会触发搜索函数 search()
  5. 监听 <input> 元素的 compositionstart 事件,当输入法开始组合文本时,将 isComposition 设置为 false,表示当前处于输入法组合状态。
  6. 监听 <input> 元素的 compositionend 事件,当输入法结束组合文本时,将 isComposition 设置为 true,表示输入法组合状态结束,并立即触发搜索函数 search(),以输出最终确认的输入文本。

这段代码可以确保在用户输入时能够正确处理输入法组合状态下的文本,并在确认输入后触发搜索操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1598642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊云科技直冲云霄训练营活动开始啦(送考试半价券)

小李哥分享的是亚马逊科技官方免费直冲云霄训练营学习活动&#xff0c;通过该活动可以薅到以下的羊毛 1️⃣免费系统性技能培训&#xff0c;成为AWS技术大牛 2️⃣考试半价券&#xff0c;最高可省1086元人民币 3️⃣分享活动获得精美礼品 4️⃣亚马逊云科技年度全球技术大会门票…

avicat连接异常,错误编号2059-authentication plugin…

错误原因为密码方式不对&#xff0c;具体可自行百度 首先管理员执行cmd进入 mysql安装目录 bin下边 我的是C:\Program Files\MySQL\MySQL Server 8.2\bin> 执行 mysql -u -root -p 然后输入密码 123456 进入mysql数据库 use mysql 执行 ALTER USER rootlocalhost IDE…

了解以太网环网保护倒换(ERPS)

以太网环网保护交换&#xff08;ERPS&#xff09;有助于实现高可靠性和网络稳定性。本文概述了ERPS&#xff0c;包括其定义、基本概念和优点。 什么是ERPS&#xff1f; 以太网环网保护切换&#xff08;ERPS&#xff09;是一种标准化的网络设计方法&#xff0c;旨在确保以太网…

Day 23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

修剪二叉搜索树 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二叉搜索树的新的根节点。 ​ 最直接的想法&#xff0…

iOS修改外部符号指针地址—fishhook原理

上篇文章解释了外部符号加载的原理&#xff0c;知道了外部函数地址最后都保存在__DATA_CONST,__got或__DATA,__lay_symbol_ptr。 因此我们如果想要hook外部函数&#xff0c;只需要在启动后修改这两个段内的值就行。 接下来就是怎么找到某个外部符号在__DATA_CONST,__got或__DA…

【MySQL笔记】InnoDB的插入缓存+非聚簇索引插入的离散性理解

文章目录 为什么需要插入缓存Insert Buffer非聚簇索引插入的离散性 Insert Buffer查看Insert Buffer信息 Insert Buffer的问题Change Buffer总结Reference 为什么需要插入缓存Insert Buffer 磁盘中的主键索引由于天然自增&#xff0c;无须磁盘的随机 I/O&#xff0c;只需不断追…

必示科技与日志易达成深度战略合作,携手共创智能运维新篇章

近日&#xff0c;智能运维企业必示科技与智能日志分析企业日志易达成深度战略合作&#xff0c;双方将在提升产品服务、技术融合创新应用、市场拓展、资源共享和协同效用等方面展开合作&#xff0c;为企业用户提供更全面优质的IT管理智能化服务&#xff0c;共同提升市场影响力&a…

【多线程】单例模式 | 饿汉模式 | 懒汉模式 | 指令重排序问题

文章目录 单例模式一、单例模式1.饿汉模式2.懒汉模式&#xff08;单线程&#xff09;3.懒汉模式&#xff08;多线程&#xff09;改进 4.指令重排序1.概念2.question:3.解决方法4总结&#xff1a; 单例模式 一、单例模式 单例&#xff0c;就是单个实例 在有些场景中&#xff0c…

半导体成品测试详述(Final Test,简称FT)

00、FT的一些概念 半导体成品测试&#xff08;Final Test&#xff0c;简称FT&#xff09;是在芯片封装完成后进行的最后一个测试阶段&#xff0c;其目的是确保芯片在实际应用中的性能和可靠性。FT测试可以包括环境测试、老化测试和应用特定的性能测试。 FT测试主要是为了解决各…

【快速上手STM32】SPI通信协议1.8寸TFT-LCD(ST7735S)

SPI简介 SPI&#xff0c;英文全称Serial Peripheral Interface&#xff0c;即串行外围设备接口&#xff0c;是一种高速、全双工、同步的串行通信总线。 我们之前说过I2C&#xff0c;那么我们就拿I2C和SPI做个对比。 SPI和I2C对比&#xff0c;优势在于SPI的传输速率比I2C快得…

shell脚本学习第一课

shell 简介 解析器 shell脚本基本使用

消息队列中间件,RabbitMQ的使用,死信队列,延迟队列,利用枚举实现队列,交换机,RountKey的声明

目录 0.交换机种类和区别 1.声明队列和交换机以及RountKey 2.初始化循环绑定 3.声明交换机 4.监听队列 4.1 监听普通队列 4.2监听死信队列 5.削峰填谷的实现 0.交换机种类和区别 Direct Exchange&#xff08;直连交换机&#xff09;&#xff1a; 直连交换机将消息发送到…

青铜器RDM研发管理平台 upload 任意文件上传漏洞复现

0x01 产品简介 青铜器RDM研发管理平台是集成产品管理、研发部门管理、研发项目管理、研发多项目管理、研发资源管理、研发绩效管理、研发工程管理的集中平台。 0x02 漏洞概述 青铜器RDM研发管理平台 upload 接口存在任意文件上传漏洞,未经身份验证的远程攻击者可通过该漏洞…

FreeSWITCH 1.10.10 简单图形化界面17 - ubuntu22.04或者debian12 安装FreeSWITCH(IamFree)

FreeSWITCH 1.10.10 简单图形化界面17 - ubuntu22.04或者debian12 安装FreeSWITCH 界面预览00、先看使用手册0、安装操作系统1、下载脚本2、开始安装3、登录网页 FreeSWITCH界面安装参考&#xff1a;https://blog.csdn.net/jia198810/article/details/132479324 界面预览 htt…

【Web】VS Code 插件

专栏文章索引&#xff1a;Web 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、安装步骤 二、插件 1.Chinese (Simplified) (简体中文) 2.open in browser 3.vscode-icons 4.Live Server 5.Live Server Preview 6.翻译(英汉词典) 一、安装步骤 点击 “扩…

Servlet的文件上传下载

Servlet的文件上传|下载 二、文件上传实现 2.1实现思路 需要使用到Commons-FileUpload组件需要将jsp页面form表单的enctype属性值设置为“multipart/form-data”&#xff0c;Servlet中使用IO流实现文件的上传 2.2、实现过程 2.2.1新建web项目导入jar包 <dependency>…

NLP的奥秘:用 Python 揭秘人类语言与人工智能的桥梁【6000 字长文含代码示例】

目录 NLP 的核心任务 NLP 的发展历史 NLP 的技术与方法 传统的 NLP 技术与方法 规则基础方法&#xff1a;语言学的智慧 统计学习方法&#xff1a;数据的力量 深度学习方法&#xff1a;人工智能的新浪潮 NLP 的应用领域 Python在 NLP 中的应用 1、NLTK (Natural Langu…

数字孪生与企业

数字孪生技术&#xff0c;简而言之&#xff0c;就是创造一个物理实体的数字双胞胎&#xff0c;在虚拟世界中精确模拟现实世界的行为、过程和系统。这种技术的核心在于&#xff0c;它允许我们在数字环境中实时地监控、分析和优化其物理对应物的性能和效率。数字孪生的应用场景极…

node.js服务器静态资源处理

前言&#xff1a;node.js服务器动态资源处理见 http://t.csdnimg.cn/9D8WN 一、什么是node.js服务器静态资源&#xff1f; 静态资源服务器指的是不会被服务器的动态运行所改变或者生成的文件. 它最初在服务器运行之前是什么样子, 到服务器结束运行时, 它还是那个样子. 比如平…

基于springboot+vue+Mysql的校园新闻网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…