微信小程序:正则 input只能输入数字

该博客探讨了在HTML中,`<input type=number>`无法限制输入仅为数字的问题。作者提出通过监听input事件,结合正则表达式校验并过滤用户输入,以确保手机号码字段只接受数字。这种方法虽然可能导致界面闪烁,但能有效实现限制。文章还提供了`handleInput`和`validateNumber`的示例代码来实现这一功能。
<input type="number" auto-focus focus='{{focus}}' value="{{value}}"  bindinput="handleInput" bindblur="validate" maxlength="11" placeholder="请输入十一位手机号码..." placeholder-style="font-size:3vw;"/>

需求是输入手机号,设置type为number只能拉起数字键盘,并不能限制其只能输入数字。因此我们需要通过其他的方法来做限制。

正则
为input绑定data中的value值,在input事件中监听输入的值。利用正则将其过滤然后重新setData更新value值,缺点就是输入非数字的值时界面会闪烁(重渲染)

handleInput(e) {
      let value = this.validateNumber(e.detail.value)
      this.setData({
        value
      })
    },
validateNumber(val) {
      return val.replace(/\D/g, '')
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值