博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实时监控用户输入--中文输入解决方案
阅读量:6403 次
发布时间:2019-06-23

本文共 713 字,大约阅读时间需要 2 分钟。

需求:对用户的输入进行实时监控,当用户输入的内容超出规定的字符长度时对用户输入进行截断并给予警告提示。

看到这一需求,第一想法就是对所需实时监控的input输入框绑定input/propertychange事件,然后在input/propertychange事件的处理函数中对用户实时输入内容进行长度判断。

实验发现,这种处理方式对于英文字符或者数字输入时效果完美,但是在输入中文时有bug。如下图所示,规定字符长度为5(此处不区分中英文),在中文输入时,用户还没有输入他想输入的中文,只是输入了几个拼音字符,但 input 事件也被触发了,提示长度超过上线!这并不是我们所希望的!我们希望当用户输入中文,能够在用户将想输入的中文内容输入到input框再进行长度判断。

图片描述

在网上找了解决方案时,发现了一些以前没听过的事件。

复合事件

复合事件(composition event)是DOM3级事件中新添加的一类事件,用于处理IME的输入序列。IME(Input Method Editor,输入法编辑器)可以让用户输入在物理键盘上找不到的字符。复合事件就是针对检测和处理这种输入而设计的。
(1)compositionstart:在IME的文本复合系统打开时触发,表示要开始输入了。
(2)compositionupdate:在向输入字段中插入新字符时触发。
(3)compositionend:在IME的文本复合系统关闭时触发,表示返回正常键盘的输入状态。

用这个事件,我们可以实现中文输入法截断的问题了。代码如下:

图片描述

此处要注意,在compositionend事件即输入结束时要去触发长度判断事件。

本文参考了,感谢原文作者。

转载地址:http://hqnea.baihongyu.com/

你可能感兴趣的文章
ubuntu 把软件源修改为国内源和更新
查看>>
随机产生四则运算,导入导出文件
查看>>
位运算符
查看>>
winform自定义控件
查看>>
C#编码好习惯
查看>>
避其锋芒,侧翼出击。——司马亮创业回忆录(一)
查看>>
scope
查看>>
一起谈.NET技术,晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
查看>>
一起谈.NET技术,.Net Framework源代码中的模式之Prototype(原型模式)
查看>>
[shell 命令] find 查找文件
查看>>
windows下启动mysql服务的命令行启动和手动启动方法
查看>>
VTK三维点集轮廓凸包提取
查看>>
【概率论与数理统计】小结9-3 - 区间估计
查看>>
Golang性能调优入门
查看>>
sqlloader外部表
查看>>
golang笔记——数组与切片
查看>>
屏蔽可忽略的js脚本错误
查看>>
散文分享
查看>>
【Vue】vue.js常用指令
查看>>
NFS学习
查看>>