el-input-number/el-input 实现实时输入数字转换千分位(失焦时展示千分位)

el-input-number/el-input 实现实时输入数字转换千分位(失焦时展示千分位)

我把封装指令的代码放在了main.js,代码如下

// 金额展示千分位
Vue.directive("thousands", {
  inserted: function(el, binding) {
    // debugger
    // 获取input节点
    if (el.tagName.toLocaleUpperCase() !== "INPUT") {
      el = el.getElementsByTagName("input")[0];
    }
    // 千分位格式化
    el.value = parseFloat(el.value).toLocaleString("zh", {
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    });
    // 聚焦转化为数字格式(去除千分位)
    el.onfocus = e => {
      const a = el.value.replace(/,/g, ""); // 去除千分号的','
      el.value = parseFloat(a).toFixed(2);
    };
    // 失去焦点重新格式化
    el.onblur = e => {
      setTimeout(() => {
        // 恢复原始值
        // el.value = parseFloat(el.value);
        // 格式化为千分位
        el.value = parseFloat(el.getAttribute("aria-valuenow")).toLocaleString(
          "zh",
          {
            minimumFractionDigits: 2,
            maximumFractionDigits: 2
          }
        );
      }, 0);
    };
  },
  update: function(el, binding) {
    // debugger
    // 获取input节点
    if (el.tagName.toLocaleUpperCase() !== "INPUT") {
      el = el.getElementsByTagName("input")[0];
    }
     setTimeout(() => {
    // 千分位格式化
    const valueWithoutComma = el.value.replace(/,/g, ""); // 去除千分号的','
    // 转换为浮点数
    const floatValue = parseFloat(valueWithoutComma);
    // 格式化为千分位
    el.value = floatValue.toLocaleString("zh", {
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    });
    }, 100);
  }
});

在html界面使用例子如下(直接加入:v-thousands 即可)

				<el-input-number
                  v-thousands
                  v-if="isCanEdit"
                  v-model="addForm.base_header.atl_amt"
                  :step="1"
                  :min="0"
                  style="width: 160px;"
                  placeholder="0.00"
                  controls-position="right"
                  @change="changeAtlAmt"
                />
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值