input输入框实现限制输入两位小数的正整数

<input 
    v-model="value" 
    type="text" 
    onkeyup="value = (value || '').replace(/[^\d\.]/, '')
    .replace(/^0{1,}(\d+)/, '$1')
    .replace(/^\.{1,}(\d*)/, '$1')
    .replace(/^(\d+)\.+(\d*)$/, '$1.$2')
    .replace(/^(\d+)\.(\d\d).*$/,'$1.$2')
    ">
// 匹配最多可以输入两位小数的正整数的正则表达式
const reg = /^((([1-9][0-9]*)|0)\.{1}[0-9]{1,2}$)|(^[1-9][0-9]*$)/

微信小程序中通过@input回调的方式格式化数据时,如果使用v-model的方式双向绑定数据需要使用异步赋值的方式如setTimeout();如果是:value的方式,直接@input中return最终格式化的字符串即可

<input 
    v-model="value" 
    @input="changeInput"
    type="text">

function changeInput(e) {
	let value = e.detail.value
	setTimeout(() => {
		this.value = (value || '').replace(/[^\d\.]/, '')
								  .replace(/^0{1,}(\d+)/, '$1')
								  .replace(/^\.{1,}(\d*)/, '$1')
   								  .replace(/^(\d+)\.+(\d*)$/, '$1.$2')
                                  .replace(/^(\d+)\.(\d\d).*$/,'$1.$2')
	})
	// :value的方式
	// return e.detail.value.replace(/[^\d\.]/, '')
	//						.replace(/^0{1,}(\d+)/, '$1')
	//						.replace(/^\.{1,}(\d*)/, '$1')
   	//						.replace(/^(\d+)\.+(\d*)$/, '$1.$2')
    //                      .replace(/^(\d+)\.(\d\d).*$/,'$1.$2')
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值