前端培训-初级阶段-场景实战(2019-05-30)-input 搜索如何防抖,如何处理中文输入

简介: 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。场景实战这块内容每个人的内容都不一样。所以最近的更新基本都是我遇到并解决掉的问题。后期会把他们的内容贴地址。

今天我们要讲什么?


有的时候也不知道要写点什么。在掘金摸鱼的时候看到了一个题「第 79 题:input 搜索如何防抖,如何处理中文输入」,感觉挺有意思的。今天我们就来说一说这些相关的知识


  1. 节流(throttle )、去抖(debounce )


  1. input 标签支持的事件(和值相关的)


  1. 正题-搜索框-去抖-处理中文input时候的异常


节流(throttle )、去抖(debounce )


节流(throttle )、去抖(debounce ),之前写过,有现成的,我就不写了。


input 标签支持的事件


键盘事件


  1. keydown 事件
    键盘按下事件


  1. keypress 事件
    按下产生字符值的键时会触发。如字母、数字、标点符号。不产生字符值的键的例子是修饰键如 Alt、Shift、Ctrl、backspace


  1. keyup 事件
    键盘弹起事件


值改变事件


  1. change 事件
    值改变事件,在失去焦点的时候判断是否改变,如果改变了会触发。
    可以先输入 123,然后改成 123456 这个时候把 456 删除,就会发现并不会触发 change测试地址-change事件


  1. input 事件
    值改变事件,在每次改变的时候触发。
    同上测试案例,会发现触发了 9input 事件。测试地址-input事件


输入法事件


  1. compositionstart
    输入法的第一个字母时触发。进去输入法状态


  1. compositionupdate
    输入法的每次更新时触发。输入法状态输入内容。


  1. compositionend
    输入法选择之后触发。退出输入法状态


搜索框-去抖-处理中文input时候的异常


其实看到上面的那些逻辑我们就可以知道,compositionstart 是我们需要监测的事件


事件触发顺序


进入输入法状态:compositionstart=>compositionupdate=>input


输入中:compositionupdate=>input


退出输入法状态:compositionupdate=>input=>compositionend


bVbtaqm.webp.jpg


实现方案


  1. 触发了 compositionupdate 就把下次 input 抛弃。compositionend 触发一下 input 的事件;


测试地址-方案1,效果感觉很不错,去抖的话,给 demo5Console = debounce(demo5Console, 3000)


bVbtatx.webp.jpg


  1. compositionstart 的时候改掉 value,当然这个方案没成功,因为会导致输入框都没了。


总结一下


PC端有输入的时候我们需要通过 compositionupdate 来纠正输入框的内容。

为什么不说移动端呢?因为我还没测试。


后记


参考资料


  1. 事件参考 - MDN
相关文章
|
5天前
|
前端开发 API
通义灵码企业级检索增强-前端自研场景采纳率提升DEMO
通义灵码企业级检索增强DEMO展示了通过对话方式检索企业内部知识的能力,特别是在前端自研场景中。例如,上传标准化组件库后,系统能准确推荐trace ID等组件的规范写法,显著提升采纳率8个百分点,效果明显。
|
1月前
|
存储 前端开发 JavaScript
前端状态管理:Vuex 核心概念与实战
Vuex 是 Vue.js 应用程序的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。本教程将深入讲解 Vuex 的核心概念,如 State、Getter、Mutation 和 Action,并通过实战案例帮助开发者掌握在项目中有效使用 Vuex 的技巧。
|
2月前
|
Web App开发 缓存 监控
前端性能优化实战:从代码到部署的全面策略
前端性能优化实战:从代码到部署的全面策略
45 1
|
2月前
|
Web App开发 前端开发 JavaScript
前端性能优化实战:从代码到部署的全面指南
前端性能优化实战:从代码到部署的全面指南
47 1
|
2月前
|
缓存 前端开发 搜索推荐
前端性能优化实战:提升网页加载速度
前端性能优化实战:提升网页加载速度
|
2月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
102 2
|
2月前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
64 2
|
3月前
|
前端开发 程序员 API
前端|基于 Layui 实现动态搜索选择框
网页端实现动态搜索选择框,要求下拉选项列表能根据用户输入内容动态刷新,最终提交的值必须是由选项列表中点选的。
83 3
|
3月前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
3月前
|
存储 缓存 算法
前端算法:优化与实战技巧的深度探索
【10月更文挑战第21天】前端算法:优化与实战技巧的深度探索
38 1

热门文章

最新文章