问题业务开发经常会遇到弹出数字键盘的问题。产品方希望弹出一个带小数点的纯数字键盘。如下代码:可以在android下弹出数字和小数点的键盘,并自动屏蔽非法字符,完美。但iOS并不是纯数字键盘,而是键盘的第一行是数字:并且iOS无法阻止汉字、字母、空格和各种特殊符号。而且输入这些符号后,绑定的值变为空,无法获取到当前显示的内容。这种键盘很难处理。keydown输入等事件中的输入拦截过滤很难处理所有情况。尤其是切换到九宫格键盘之后,根本无法应对。预期结果我们想要一个这样的键盘:这种键盘在很多应用和一些组件库中都有看到。这种数字键盘在iOS中原生实现很容易,但是在h5中比较麻烦。解决方法如下:这是一段vue代码:使用属性inputmode,详情请参考:https://developer.mozilla.org...嗯,现在键盘是数字键盘带小数点。大概看过iOS下的safari、微信等,目前都可以。键盘out了,然后需要写一些逻辑来处理一些非法的情况:防止复制粘贴特殊字符,屏蔽表情,多个小数点共存,开头有多个0,替换开头的0用一个新的数字,并将小数控制为2位等。onInputAmount(){让temp=this.purchaseMoney;如果(temp){temp=temp.replace(/[^0-9.]/g,'');//字符串中有多个点,只保留第一个,其他过滤掉if(temp&&temp.length&&temp.indexOf('.')!=temp.lastIndexOf('.')){vararr=temp.split('.');让首先=arr.shift();temp=first+'.'+arr.join('');}//如果截取小数部分最多2位if(temp.indexOf('.')!=-1){letintegerPart=temp.split('.')[0];让decimalPart=temp.split('.')[1];如果(decimalPart.length>2){decimalPart=decimalPart.substring(0,2);}temp=integerPart+'.'+小数部分;}//去掉头部多余的0while(/^0[0-9]/.test(temp)){temp=temp.substring(1);}}this.purchaseMoney=temp;},至此,主要功能基本满足,如有发现问题,稍后更新。在使用vant组件的时候,看到field组件也使用了inputmode方案,官网有专门的说明。