antd的输入框用不同的输入法会出现不同的结果
各位大佬:
antd版本:3.x
我在输入框的onchange事件中添加了正则表达式,去除特殊字符,在搜狗输入法中出现的时正常的结果,但在微软自带的和qq输入法都出现不同的bug。
这个是我的正则表达式,用来去除特殊字符:
e.target.value = e.target.value.replace(/[^a-zA-Z0-9\u4E00-\u9FA5]/g,'')
比如:在微软自带的输入框中文情况下,连续输入ww,输入框的内容自动变成了w'ww'wwwww(我想要的结果是两个中文)
截图如下:
在qq输入法的情况下,连续输入ww,输入框的内容自动变成了w'w(也是直接变成英文了,我想要的结果也是两个中文)
截图如下:
在使用搜狗输入法的情况下,连续输入ww,结果是正确的。
截图如下:
就很奇怪,有大佬遇到过吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已经解决这个问题了。
input输入框输入中文的时候有三个过程,onCompositionStart->onChange->onCompositionEnd,第一个和最后一个只会出发一次,而onChange方法会在输入值的时候一直触发,所以可以存一个变量,在onCompositionEnd只会把这个变量设为false,再进行一次正则判断,也就是onCompositionStart和onChange的时候不做正则校验,就不会有问题了。
这个是onCompositionStart和onCompositionEnd的方法。
这个是输入的时候触发的方法。
火狐浏览器的输入过程不太一样,onCompositionStart->onCompositionEnd->onChange,所以火狐浏览器不需要在onCompositionEnd之后再触发一次changeAreaName方法,因为会自动触发。