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

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(),以输出最终确认的输入文本。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

消费增值新模式:让每一分钱都更有价值

亲爱的消费者们&#xff0c;大家好&#xff01;今天我想和大家探讨一种新颖的消费方式——消费增值&#xff0c;它让您的每一次消费都蕴含了额外的价值&#xff0c;让消费变得更加有意义。 在过往的消费观念里&#xff0c;我们往往只是简单地将钱花出去&#xff0c;购买所需的商…

医院一站式后勤管理系统 processApkUpload.upload 任意文件上传漏洞复现

0x01 产品简介 医院一站式后勤管理系统由南京博纳睿通软件科技有限公司开发的一款基于现代医院后勤管理理念的业务系统,产品结合后勤业务管理特点,通过管理平台将后勤管理业务予以系统化、规范化和流程化,从而形成一套构建于平台之上且成熟完善的后勤管理体系,并可在此体系…

mysql的下载、安装

首先进入官网&#xff1a;MySQL 点击“downloads”进入下载界面 2.往下滑动滚轮&#xff0c;点击“mysql community...&#xff08;公开版&#xff09;” 3.往下滑&#xff0c;找到并单击“install for Windows” 4.选择版本&#xff1a;初学者可以使用较低版本&#xff0c;较…

SpringCloud框架 服务拆分和远程调用

数据库隔离避免耦合度过高&#xff0c;不同模块将自己的业务暴露为接口&#xff0c;供其他微服务调用 微服务远程调用技术Rest 在后端实现发送http请求 1.在启动类/配置类里注册RestTemplate启动对象 2.注入Bean对象使用

电商技术揭秘十四:大数据平台的选择与构建

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

一款牛逼的开源建站系统,轻松搭建专属博客网站(文末有福利)

今天给大家介绍一款牛逼的开源建站系统&#xff0c;支持多种方式部署&#xff0c;支持mardown、富文本、在线表格和思维导图等主流功能&#xff0c;轻轻松松帮你建立一个专属的、独一无二的博客网站。 博客功能 博文空间(便于博文组织,权限隔离) Markdown、Html富文本、电子表…

GD32F3系列单片机环境搭建

GD32单片机介绍 使用到开发板 GD32F303C-START 芯片型号&#xff1a;GD32F303CGT6 PinToPin单片机型号&#xff1a;STM32F103 GD32F303CGT6是超低开发预算需求并持续释放Cortex-M4高性能内核的卓越动力&#xff0c;为取代及提升传统的8位和16位产品解决方案&#xff0c;直接进…

Linux标准c库打开创建文件读写文件光标移动

fopen函数“const char *mode”参数选项。 结果&#xff1a;

【Css】table数据为空,以“-“形式展现

解决&#xff1a;class类名 它表示的是在一个名为class类名的元素内部&#xff0c;当该元素为空时&#xff0c;会在该元素的:before伪元素上应用一些样式。 这种写法通常用于在元素内容为空时&#xff0c;添加一些占位符或者提示文字

Hdevelop编辑器常用功能

1、灰度直方图 【阈值分割】——对应算子threshold 通过菜单【可视化】-【工具】-【灰度直方图】打开&#xff0c;打开后选中【变量窗口】的某张图片即可进行灰度直方图分析。 刚打开并选中某张图片&#xff1a; 调节【最小化】和【最大化】的两个竖线&#xff0c;此时图中绿…

【EM算法】算法及注解

EM算法又称期望极大算法&#xff0c;是一种迭代算法&#xff0c;每次迭代由两步组成&#xff1a;E步&#xff0c;求期望&#xff08;expectation&#xff09;&#xff1b;M步&#xff0c;求极大&#xff08;maximization&#xff09;。 算法背景 如果概率模型的变量都是观测变…

第12届蓝桥杯java A组做题记录

A题&#xff1a;相乘 package JAVA12l蓝桥杯; //求2021的逆元public class 相乘 {static int mod (int)1e9 7;public static long qmi(long a,int k,int p){long res 1;while(k > 0){if(k % 2 1) res res * a % p;a a * a % p;k >> 1;}return res;}public stati…

【黑马头条】-day09用户行为-点赞收藏关注阅读不喜欢-数据回显-精度丢失解决

文章目录 1 long类型精度丢失问题1.1 解决1.2 导入jackson序列化工具1.3 自定义注解1.4 原理1.5 测试 2 用户行为要求3 创建微服务behavior3.1 微服务创建3.2 添加启动类3.3 创建bootstrap.yml3.4 在nacos中配置redis3.5 引入redis依赖3.6 更新minio 4 点赞4.1 实体类LikesBeha…

机器人方向控制中应用的磁阻角度传感芯片

磁阻传感器提供的输出信号几乎不受磁场变动、磁温度系数、磁传感器距离与位置变动影响&#xff0c;可以达到高准确度与高效能&#xff0c;因此相当适合各种要求严格的车用电子与工业控制的应用。所以它远比采用其它传感方法的器件更具有优势。 机器人的应用日渐广泛&#xff0…

ChatGPT们写高考作文会发生什么?

2023年的高考结束了&#xff0c;今年共有1291万考生参加了高考了&#xff0c;再次创造了历史参考人数之最。在高考中&#xff0c;要说什么最引人讨论&#xff0c;那高考作文当仁不让啊。今年随着ChatGPT的爆火&#xff0c;可谓是给文字工作者带来一大助力&#xff0c;如果让AI来…

2024腾讯一道笔试题--大小写字母移动

题目&#x1f357; 有一个字符数组,其中只有大写字母和小写字母,将小写字母移到前面, 大写字符移到后面,保持小写字母本身的顺序不变,大写字母本身的顺序不变, 注意,不要分配新的数组.(如:wCelOlME,变为wellCOME). 思路分析&#x1f357; 类似于冒泡排序&#xff0c;两两比较…

将本地项目上传到Github

首先安装git、创建github账号 1、创建一个新的仓库 2、创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录&#xff0c;有的话看下里面有没有id_rsa和id_rsa.pub这两个文件&#xff0c;有就跳到下一步&#xff0c;没有就通过下面命令创建。 ssh-keygen -t rsa -C "you…

做测试,不会接口测试怎么能行?

接口测试的测试点 功能测试&#xff1a;单接口功能、业务场景功能 性能测试&#xff1a;响应时长、错误率、吞吐量、服务器资源使用率 安全测试&#xff1a;敏感数据是否加密、SQL注入、其他 本篇文章以接口功能测试为主。 接口用例设计方法&#xff1a; 单接口测试用例设…

如何通过Linux pciehp sysfs接口控制PCIe Slot电源状态?-3

pciehp sysfs接口电源控制与NVME驱动卸载的区别 从NVMe SSD设计本身而言&#xff0c;当通过pciehp sysfs接口对PCIe插槽执行Power Off操作时&#xff0c;由于NVMe SSD作为PCIe设备&#xff0c;其电源供应是直接依赖于所连接的PCIe插槽提供的。当插槽电源被关闭时&#xff0c;会…