js验证输入金额,整数位保留几位,小数保留2位。

//输入验证几位整数inputValue传入的值,保留整数位的位数numbers
function checkNumber5 (inputValue, numbers){
  if (inputValue.indexOf(".") == -1) {
    if (inputValue.length > numbers) {
      inputValue = inputValue.substr(0, numbers);
    }
  } else {
    var arr = inputValue.split(".");
    var length = arr[0].length;
    if (length > numbers) {
      var totalInt = arr[0];
      var totalDecimal = 0;
      if (arr[1].length > 0) {
        totalDecimal = arr[1] * Math.pow(10, arr[1].length) / Math.pow(10, arr[1].length) / Math.pow(10, arr[1].length);
      }
      var bigDecimal = parseInt(totalInt.substr(0, numbers)) + totalDecimal;
      inputValue = bigDecimal;
    }
  }
  return inputValue;
}
 
   

网上找到金额检验
function onlyNumber (obj) {
//禁止录入整数部分两位以上,但首位为0
obj.value = obj.value.replace(/^([1-9]\d*(\.[\d]{0,2})?|0(\.[\d]{0,2})?)[\d.]*/g, '$1');
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^\d\.]/g, '');
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\./g, '0.');
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\.{2,}/g, '.');
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace( '.', '$#$').replace(/\./g, '').replace( '$#$', '.');
//只能输入两个小数
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
return obj.value;
}

使用场景:

监听输入input框的值变化

$(input).on("click", function(){

  var inputValue = this.onlyNumber(e.detail);
inputValue = this.checkNumber5(inputValue, 5);
this.setData({
inputValue: inputValue
})
})


添加失去焦点保留两位小数函数

changeTwoDecimal_f: function (x) {
var f_x = parseFloat(x);
if(isNaN(f_x)){
return 0;
}
   var f_x = Math.round(x * 100) / 100;
   var s_x = f_x.toString();
   var pos_decimal = s_x.indexOf( '.');
   if(pos_decimal < 0){
  pos_decimal = s_x.length;
  s_x += '.';
  }
   while (s_x.length <= pos_decimal + 2)   {
s_x += '0';
}
   return s_x;
}

欢迎大家指点,如有不足的地方

你可能感兴趣的:(web前端)