输入框最多保留一位小数和保留整数的函数(用的是vantUI组件)
<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>