当前位置 主页 > 服务器问题 > Linux/apache问题 >

    vue element-ui实现input输入框金额数字添加千分位

    栏目:Linux/apache问题 时间:2020-01-03 12:24

    在util.js中定义方法

    包含金额添加过滤千分位,验证金额格式等

    const MoneyTest = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
    // 金额添加千分位
    const comdify = function (n) {
      if(!n) return n;
      let str = n.split('.');
      let re = /\d{1,3}(?=(\d{3})+$)/g;
      let n1 = str[0].replace(re, "$&,");
      return str.length > 1 && str[1] ? `${n1}.${str[1]}` : `${n1}.00`;
    };
    //去除千分位中的‘,'
    const delcommafy = function (num){
      if(!num) return num;
      num = num.toString();
      num = num.replace(/,/gi, '');
      return num;
    };
    const valdateFn = function (rule,val,cb) {
      setTimeout(() => {
        if(val) {
          let inputVal = delcommafy(val);
          if (rule.test(inputVal)) {
            cb()
          } else {
            cb('只能是数字金额,最多两位小数')
          }
        }
        cb()
      })
    }
    // 验证金额数字可以为负数
    const moneyValid = function (rule,val,cb) {
      valdateFn(/((^-?[1-9]\d*)|^-?0)(\.\d{0,2}){0,1}$/,val,cb);
    };
    // 验证金额数字不可以为负数
    const moneyNValid = function (rule,val,cb) {
      valdateFn(MoneyTest,val,cb);
    };
    // 获取输入框的值
    const getInputValue = function (el) {
      let inputVal = el.target.value || '';
      return comdify(delcommafy(inputVal));
    };

    在组件中使用

    在template中

    <el-input v-model.trim="form.pastAdjustFee" @blur="inputMoney($event,'pastAdjustFee')"></el-input>

    在methods中定义

    data(){
     return {
     form:{
      pastAdjustFee:''
     }
     }
    }
    methods:{
     inputMoney(el,name) {
         this.form[name] = getInputValue(el);
       }
    }

    总结

    以上所述是小编给大家介绍的vue element-ui实现input输入框金额数字添加千分位,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对IIS7站长之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!