收藏
回答

ios第三方输入法bindinput 返回错误

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug input 微信iOS客户端 8.0.29 2.27.1

1.wxml

<input maxlength="8" type="digit" data-id="monthIncome" model:value="{{monthIncome}}" placeholder="请输入月均收入"
 placeholder-class="phClass" bindinput="matchAmount" />

2.js

//金额输入只允许两位小数
    matchAmount(event) {
      let value = event.detail.value
      let { id } = event.currentTarget.dataset
      value = value.replace(/[^\d^\.]+/g'')
      value = value.replace(/^0+(\d)/'$1')
      value = value.replace(/^\./'0.')
      value = value.match(/^\d*(\.?\d{0,2})/g)[0] || ''
       return value
    }

3.问题

安卓上没问题,能吊起数字键盘,ios自带输入法也没有问题

问题出在安装了第三方输入法的ios上,我使用的是讯飞输入法,我可以切换到汉字输入,并且可以输入汉字,我使用打印看到return返回空,但是页面上任然是汉字,提交也校验不出来非数字,表单校验使用 WxValidate 插件

monthIncome: { required'请输入月均收入', digit: '月均收入格式错误' },


4.解决

使用setData重复设置一次

matchAmount(event) {
      let value = event.detail.value
      let { id } = event.currentTarget.dataset
      value = value.replace(/[^\d^\.]+/g'')
      value = value.replace(/^0+(\d)/'$1')
      value = value.replace(/^\./'0.')
      value = value.match(/^\d*(\.?\d{0,2})/g)[0] || ''
      this.setData({
        [id]: value
      }, () => {
        return value
      })
    },


最后一次编辑于  2022-11-07
回答关注问题邀请回答
收藏
登录 后发表内容