iOS原生键盘的一些问题(?)

项目中遇到一个问题,就是在iOS原生键盘的情况下,不管是九键还是全键盘输入框都不能输入中文,需求是只能输入大小写字母、0-9、汉字和空格

看了一下代码,input中有这样一个正则:oninput="value=value.replace(/[^a-zA-0-9u4E00-u9FA5 ]/g,'')"

在电脑浏览器中和安卓手机上都没有问题,那只能去苹果手机上找原因了

在输入汉字的时候仔细观察了一下可以发现当通过拼音输入汉字时,拼音会在输入框中有一个占位,输入框就会判定此时输入的是字母而不是在拼汉字

 

所以我就暂时换了一种方法,把正则写在watch中,当input v-model绑定的值变化时改变它

this.searchName = newVal.replace(/[^a-zA-Z0-9u4E00-u9FA5 ]/g,"");

然后,我试了一下,又发现了一个问题,当双击符号键(九键中的1键)的时候会删除一个字符,相当于点了一下退格,这个键的功能是连续点击的时候输入框中会交替显示,。?!这几个中的一个,

仔细观察一下发现它的机制是删除现在显示的逗号,再显示句号,如果再立刻点一下,会删除句号,出来一个问号以此类推,所以当输入框中显示逗号时,updated被触发,程序把逗号换成空,此时原生键盘的机制又被触发,所以会删除前一个字符

目前还没有解决这个问题,先记录一下

原文地址:https://www.cnblogs.com/wuyufei/p/12717881.html