<template>
<div>
<van-cell-group>
<van-field v-model="value" @keyup="clearNoNum($event, 'value')" label="一位小数框" placeholder="请输入" />
<van-field v-model="value1" @keyup="clearNoNumInt($event, 'value1')" label="整数框" placeholder="请输入" />
</van-cell-group>
</div>
</template>
<script>
export default{
data () {
return {
value: '',
value1: ''
}
},
methods: {
clearNoNum (e, type) {
const obj = e.target
obj.value = obj.value.replace(/[^d.]/g, '') // 清除“数字”和“.”以外的字符
obj.value = obj.value.replace(/.{2,}/g, '.') // 只保留第一个. 清除多余的
obj.value = obj.value.replace('.', '$#$').replace(/./g, '').replace('$#$', '.')
obj.value = obj.value.replace(/^(-)*(d+).(d).*$/, '$1$2.$3') // 只能输入1个小数
if (obj.value.indexOf('.') < 0 && obj.value != '') {// 以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
obj.value = parseFloat(obj.value)
}
this[type] = obj.value
},
clearNoNumInt (e, type) {
const obj = e.target
obj.value = obj.value.replace(/[^d]/g, '') // 清除“数字”以外的字符
this[type] = obj.value
}
}
}
</script>