js 数字逢三切断、整数最大9位、小数最大2位

为了在 el-input 中实现这种功能,我们可以在 v-model 的输入值发生变化时进行格式化。

复制代码
<template>
  <el-input
    v-model="addForm.accrateval"
    @input="formatInput"
    placeholder="请输入数字"
  />
</template>

<script>
export default {
  data() {
    return {
      addForm: {
        accrateval: '', // 用于绑定输入值
      },
    };
  },
  methods: {
    formatInput(value) {
      // 1. 去除非数字和小数点字符,且保证小数点最多一个
      let val = value.replace(/[^\d.]/g, '');

      // 2. 分割整数部分和小数部分
      const parts = val.split('.');
      let integerPart = parts[0].slice(0, 9); // 整数部分最多9位
      let decimalPart = parts[1] || '';

      // 3. 如果小数部分存在,保留最多2位
      decimalPart = decimalPart.slice(0, 2);

      // 4. 如果有小数部分,补足两位;如果没有小数部分,补".00"
      if (decimalPart) {
        val = integerPart + '.' + decimalPart.padEnd(2, '0');
      } else {
        val = integerPart + '.00';
      }

      // 5. 逢三切断
      val = val.replace(/(\d)(?=(\d{3})+(\.))/g, '\$1,');

      // 更新输入框的值
      this.addForm.accrateval = val;
    },
  },
};
</script>

注释:

  • 输入 1234567 时,最终显示 1,234,567.00。
  • 输入 1234567.89 时,显示 1,234,567.89。
  • 输入 1234567890 时,显示 123,456,789.00(整数超过9位会被限制为9位)。

//方案2

不逢三切断 , 整数6位, 小数2位

复制代码
<el-input
                style="width:150px;"
                v-model="addForm.accrateval"
                maxlength="9" 
                oninput="value=value.replace(/^(\d{0,6}(?:\.\d{0,2})?).*$/g, '$1')"
                @blur="$event.target.value?addForm.accrateval = Number($event.target.value)?Number($event.target.value).toFixed(2):'':''"
              />

输入 1234567 时,最终显示 123456时,显示123456.00

输入 123456.11 时,最终显示 123456.11

相关推荐
WeiXin_DZbishe4 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
刘发财4 小时前
前端如何生成10000页PDF文件?
前端·javascript·开源
WeiXin_DZbishe4 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
A接拉起0075 小时前
2026 年 JavaScript 开发者需要了解的知识
前端·javascript·后端
_馒头5 小时前
pixiJs游戏开发实践 - 跳棋小游戏
javascript·vue.js
三*一5 小时前
优化修整算法
前端·javascript·算法
楠楠子呀6 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
AIGC小尼6 小时前
毕设实战|SpringBoot+Vue 实现多个系统项目
vue.js·spring boot·课程设计
半个落月7 小时前
LangGraph.js 实战:从状态图到分支、循环、检查点与人工中断
javascript·人工智能·langchain
踩着两条虫9 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js