输入框最多保留一位小数和保留整数的函数(用的是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>
 
posted @ 2021-03-30 15:55  搬砖的苦行僧  阅读(1026)  评论(0编辑  收藏  举报