van-field输入数字失焦后强制保留两位小数

van-field输入数字失焦后强制保留两位小数

一、 html

      <van-field
        class="extra-color"
        v-model="dataForm.externalPrice"
        label="外部服务费"
        type="number"
        :formatter="formatter"
        format-trigger="onBlur"
        placeholder="请输入外部服务费"
        input-align="right"
      />

二、 JS部分

1. watch监听

watch: {
    "dataForm.externalPrice": function (newVal, oldVal) {
      if (newVal < 0) {
        this.$toast("输⼊⾦额不能为负数!");
        this.dataForm.externalPrice = "";
      }
      // 解决数字键盘可以输⼊输⼊多个⼩数点问题
      if (newVal === "" && oldVal && oldVal.toString().indexOf(".") > 0) {
        this.dataForm.externalPrice = oldVal;
        return;
      }
      // 保留两位⼩数
      if (newVal) {
        newVal = newVal.toString();
        var pointIndex = newVal.indexOf(".");
        if (pointIndex > 0 && newVal.length - pointIndex > 3) {
          this.dataForm.externalPrice = oldVal;
          return;
        }
      }
    },
  },

2. 强制控制有两位小数

// 强制保留两位小数方法
    formatter(val) {
      // Math.abs返回数的绝对值
      let sign = val == (val = Math.abs(val));
      // Math.floor向下取整
      val = Math.floor(val * 100 + 0.50000000001);
      let cents = val % 100;
      val = Math.floor(val / 100).toString();
      if (cents < 10) {
        cents = "0" + cents;
      }
      for (var i = 0; i < Math.floor((val.length - (1 + i)) / 3); i++) {
        val =
          val.substring(0, val.length - (4 * i + 3)) +
          "," +
          val.substring(val.length - (4 * i + 3));
      }

      return (sign ? "" : "-") + val + "." + cents;
    },
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

trabecula_hj

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

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

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

打赏作者

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

抵扣说明:

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

余额充值