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了。

相关推荐
小卿噢7 分钟前
同样是插 10 万行,最快的写法比最慢的快 103 倍
前端
weixin_4173968317 分钟前
星级酒店境外电视频道怎么合法接入?合规要点与核对清单
开发语言·前端·php·1024程序员节·综合布线
hiahiahia12334 分钟前
Structured Output
前端·人工智能
FRing031 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
山雀~2 小时前
CSP 安全漏洞修复
前端·网络协议
console.log('npc')2 小时前
周期任务功能完整实现:CRON 编辑器 + 模板变量 + 执行历史
javascript·vue.js·编辑器
陌离3 小时前
Go-Gui:一套 无限接近 现代化UI的 GPU绘制界面组件框架
前端
咚咚咚小柒3 小时前
【前端】LangChain.js学习
前端·javascript·人工智能·typescript·langchain·vue·ai编程
2401_885885043 小时前
巴林语音通知接口如何对接?系统告警语音API接入教程
android·前端·网络·python·语音识别
java1234_小锋3 小时前
【技术专题】CSS3 网页技术 - CSS3 盒模型
前端·css·css3