格式化数字,小数点补全,金额输入框校验(小数点、补位等)

在项目中,经常需要格式化数字,比如金额。下面这个方法实现了小数点后补全
格式化数字,小数点补全

function formatemoney(s, n) {
  /* s:要格式化的数字
   * n:保留几位小数
   * */
  n = n > 0 && n <= 20 ? n : 2;
  s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
  var l = s.split(".")[0].split("").reverse(),
    r = s.split(".")[1],
    t = "";
  for (var i = 0; i < l.length; i++) {
    t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
  }
  return t.split("").reverse().join("") + "." + r;
}

输入框校验,实现首位不能是小数点,只能输入一个小数点,小数点后最多只能输入2位等规则的校验
输入框(主要用于金额)规则校验,限制用户输入
下面是在微信小程序中使用方法,其中maxlength是闲着输入框最大长度

bindamountInput: function (e) {
    if (e.detail.value.charAt(0) == '.') {
      e.detail.value = '0.'
    }
    let v = e.detail.value;
    var regu = /^[0-9]+\.?[0-9]*$/;
    if (regu.test(v)) {
      if (v.indexOf('.') > -1) {
        if (v.split('.')[1].length == 2) {
          this.setData({
            maxLength: v.length
          })
        } else {
          this.setData({
            maxLength: 6
          })
        }
      }
    }
    this.setData({
      amount: e.detail.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
    })


      }
    }
  },

你可能感兴趣的:(格式化数字,小数点补全,金额输入框校验(小数点、补位等))