el-input限制只能输入价格格式

bash 复制代码
<!-- 封装的价格表单组件 -->

<template>
  <el-input :value="value" :placeholder="placeholder" @input="handleInput" />
</template>

<script>
export default {
  name: "PriceInput",
  props: {
    value: {
      type: [String, Number],
      default: "",
    },
    placeholder: {
      type: String,
      default: "请输入",
    },
  },
  methods: {
    handleInput(value) {
      // 如果完全删除输入,直接传递空值
      if (value === "") {
        this.$emit("input", "");
        return;
      }

      // 仅允许数字和小数点
      let newValue = value.replace(/[^\d.]/g, "");

      // 限制只能有一个小数点
      const parts = newValue.split(".");
      if (parts.length > 2) {
        newValue = parts[0] + "." + parts.slice(1).join("");
      }

      // 再次拆分整数和小数部分
      const finalParts = newValue.split(".");
      let integerPart = finalParts[0];
      let decimalPart = finalParts.length > 1 ? finalParts[1] : undefined;

      // 处理整数部分:去除前导零,但保留至少一个零
      if (integerPart !== undefined && integerPart !== "") {
        integerPart = integerPart.replace(/^0+/, "");
        if (integerPart === "") integerPart = "0";
      } else {
        integerPart = "0";
      }

      // 限制小数部分最多两位
      if (decimalPart !== undefined && decimalPart.length > 2) {
        decimalPart = decimalPart.substring(0, 2);
      }

      // 重组最终字符串
      let result = integerPart;
      if (decimalPart !== undefined) {
        result += "." + decimalPart;
      }

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

也可以使用组件el-input-number,可参考链接,但注意处理后格式为String了。

相关推荐
無名路人3 分钟前
uniApp 小程序 vue3 app.vue静默登录其他页面等待登录完成方式二
前端·微信小程序·ai编程
CoCo的编程之路8 分钟前
2026 前端效能飞跃:深度解析智能助手的页面构建最大化方案
前端·人工智能·ai编程·智能编程助手·文心快码baiducomate
JavaAgent架构师36 分钟前
前端AI工程化(一):AI通信协议深度解析
前端·人工智能
林恒smileZAZ39 分钟前
前端如何让图片、视频、pdf等文件在浏览器直接下载而非预览
前端·pdf
孙69034243 分钟前
electron播放本地任意格式的视频
前端·javascript
小小小小宇1 小时前
设计稿转代码:如何将生成代码与内部组件库关联
前端
七牛云行业应用1 小时前
别每个 AI 工具单独配了!MCP 一次搭建,Claude、Cursor、TRAE 全能用
前端
_xaboy1 小时前
FormCreate 设计器 v6.3 正式发布:AI 表单助理3.0登场!
前端·vue.js·低代码·开源·表单设计器
胡志辉1 小时前
邮件中点击“加载图片”,你的IP地址已经被泄漏
前端·后端·安全
openKaka_1 小时前
reconcileChildren 深入:React 如何根据 ReactElement 构建子 Fiber
前端·javascript·react.js