添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

今天写小程序时,有个充值功能,需要输入充值金额,我看了下支付宝的水电表缴费交互效果,发现调启数字键盘后“输入0后第二位则不能为0,只能为小数点”“第一位不能输入小数点”“保留两位小数”“同时也只能输入数字与小数点(在非数字键盘的情况下)”,看到这兴趣就来了,肯定得搞起来。


js正则过滤金额输入时限制只能输入数字与1个小数点,且0开头第二位则不能为0

代码如下

// 调启数字键盘输入事件
valChange(val) {
    this.amount += val;
    // 只能输入"数字"和"."
    this.amount = this.amount.replace(/[^\d.]/g, '');
    // 第一位字符不能为"."
    this.amount = this.amount.replace(/^\./g, '');
    // 只能输入一个小数点且只保留一个
    this.amount = this.amount.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
    // 只能输入两位小数
    this.amount = this.amount.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
    // 如果第一位为"0",第二位必须为".",否则替换
    this.amount = this.amount.replace(/^0(?!\.|$)(.*)/, '$1');
}


如上,由于我用的uview的数字键盘,每次触发点击都会返回当前点击的数字或小数点,然后自行拼接,那么就在拼接后,使用正则的方式将其按照需求过滤掉即可。

上方代码我没进行动态封装,代码可自行复制后封装,通过动态传值来实现公用。


扫一扫 - 分享本文

扫一扫 - 打赏鹏仔

请按下 Ctrl + D

即可收藏当前文章

分享到微信朋友圈

扫一扫 - 手机阅读

侵权、举报、建议

猜你还喜欢

  • 02-22 VUE You are using the runtime-only build of Vue where the template compiler is not available. Either
  • 01-19 elementui多选上传 before-upload 格式效验错误总会触发before-remove (elementui多选上传on-success只执行了一次,只上传成功了一条)
  • 10-08 vue按钮限制连点封装 自定义指令限制连点
  • 09-12 js正则过滤金额输入时限制只能输入数字与1个小数点,且0开头第二位则不能为0
  • 07-12 uniapp中使用uQRCode生成二维码功能
  • 07-19 解决谷歌浏览器跨域问题has been blocked by CORS policy: The request client is not a secure context and the resou
  • 07-15 小程序嵌入网页向小程序跳转并传参,微信小程序中实现公众号授权获取openId
  • 07-13 vue中实现文件批量打包压缩下载(以及下载跨域问题分析)
  • 07-08 uniapp调用地图,进行位置查询,标记定位
  • 11-05 js截取字符串前几位或者截取字符串后几位
  • 10-25 js替换字符串某个字符,js修改字符串中指定字符
  • 09-26 vue给单独组建的body添加类名
  •