封装金额组件输入框

文章介绍了如何在Vue组件中实现一个货币输入框,包括类型、占位符、值的监听和处理,以及数字格式的规范化,如去除非法字符、保留两位小数等。
摘要由CSDN通过智能技术生成
<template>
  <!-- 输入框 -->
  <el-input
    :type="type"
    :placeholder="placeholder"
    v-model="input"
    @input="inputChange"
    @change="valueChange"
    :maxlength="maxlength"
    clearable
    :disabled="disabled"
  ></el-input>
</template>
<script>
import { formatNumber } from "common/index.js";
export default {
  props: {
    type: {
      type: String,
      default: "text",
    },
    value: {
      type: [String, Number],
      default() {
        return "";
      },
    },
    maxlength: {
      type: Number,
      default: 18,
    },
    placeholder: {
      type: String,
      default: "",
    },
    disabled: {},
  },
  watch: {
    value: {
      handler(val) {
        this.input = val;
      },
      deep: true,
    },
  },
  data() {
    return {
      input: this.value,
    };
  },
  methods: {
    valueChange(e) {
      this.$emit("change", e);
    },
    inputChange(val) {
      let val2 = val
        .replace(/[^\d.]/g, "")
        .replace(/\.{2,}/g, ".")
        .replace(".", "$#$")
        .replace(/\./g, "")
        .replace("$#$", ".")
        .replace(/^\./g, "")
        .replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3"); //保留了两位小数
      if (val2.indexOf(".") < 0 && val2 != "") {
        //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
        if (val2.substr(0, 1) == "0" && val2.length == 2) {
          val2 = val2.substr(1, val2.length);
        }
      }

      let result = formatNumber(val2);
      this.input = result;
      this.$emit("input", result);
    },
  },
};
</script>

```javascript
在这里插入代码片
            <moneyInput
              style="width: 200px"
              class="input-num"
              @change="moneyChange"
              v-model="savePlanPopForm.trxnAmt"
            ></moneyInput>

```javascript
在这里插入代码片
  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值