输入框自动保留2位小数

<template>
  <div class="box">
    <el-form :model="form" :rules="rules" ref="form" label-width="120px">
      <el-form-item label="保留2位小数" prop="aaa">
        <!-- v-numberInt自定义的指令 -->
        <el-input v-model="form.aaa" v-numberInt:2='form.aaa'></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('form')">确认</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data () {
    return {
      form: {
        aaa: ''
      },
      rules: {
        aaa: [
          { required: true, validator: VALIDATEaaa, trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    // 提交
    submitForm (formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          console.log(this.form)
        }
      })
    }
  }
}
// 校验规则
const VALIDATEaaa = (rule, value, callback) => {
  if (!value) {
    callback(new Error('请输入0-100的数字,小数点后两位'))
  } else if (String(value) == '100.0' || String(value) == '100.00') {
    callback();
  } else if (value && !(/^(([1-9]\d|[0-9])(\.\d{1,2})|([1-9]\d|[0-9]|100))$/.test(value))) {
    callback(new Error('请输入0-100的数字,小数点后两位'))
  } else if (value < 0 || value > 100) {
    callback(new Error('请输入0-100的数字,小数点后两位'))
  } else {
    callback();
  }
}
</script>

<style lang="less" scoped>
.box {
  margin-left: 100px;
}
</style>

// 自定义指令代码放到main.js文件中 

// 自定义指令
Vue.directive('numberInt', {
  bind: function (el, binding, vnode) {
    const element = el.getElementsByTagName('input')[0]
    const len = binding.arg // 初始化设置 
    // element.value = Number(element.value).toFixed(len) //不需默认值
    // 监听失焦时候格式化
    element.addEventListener('blur', function () {
      if (element.value) {
        if (isNaN(element.value)) {
          vnode.data.model.callback(element.value)
        } else {
          vnode.data.model.callback(Number(element.value).toFixed(len))
        }
      }
    })
  }
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学不会•

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值