项目中遇到一个问题,就是在iOS原生键盘的情况下,不管是九键还是全键盘输入框都不能输入中文,需求是只能输入大小写字母、0-9、汉字和空格
看了一下代码,input中有这样一个正则:oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,‘‘)"
在电脑浏览器中和安卓手机上都没有问题,那只能去苹果手机上找原因了
在输入汉字的时候仔细观察了一下可以发现当通过拼音输入汉字时,拼音会在输入框中有一个占位,输入框就会判定此时输入的是字母而不是在拼汉字
所以我就暂时换了一种方法,把正则写在updated方法中,当input v-model绑定的值变化时会触发这个钩子函数
updated() { this.searchName = this.searchName.replace(/[^a-zA-Z0-9\u4E00-\u9FA5 ]/g,""); },
然后,我试了一下,又发现了一个问题,当双击符号键(九键中的1键)的时候会删除一个字符,相当于点了一下退格,这个键的功能是连续点击的时候输入框中会交替显示,。?!这几个中的一个,
仔细观察一下发现它的机制是删除现在显示的逗号,再显示句号,如果再立刻点一下,会删除句号,出来一个问号以此类推,所以当输入框中显示逗号时,updated被触发,程序把逗号换成空,此时原生键盘的机制又被触发,所以会删除前一个字符
目前还没有解决这个问题,先记录一下