限制用户,小数点前的位数大于8,小数点后大于2

时间:2017-12-23 22:08:15

标签: javascript

允许的值 999 99.99 12345678.12

不允许 123456789 - >如果第9个字符是数字,则需要限制用户,它必须只是小数。

2 个答案:

答案 0 :(得分:0)

尝试使用此功能:

function isValidNumber(num) {
    if (!parseInt(num) || (num.toString().length >= 9 && (num.toString().indexOf('.') == -1 || num.toString().indexOf('.') >= 9))) {
        return false;
    }
     return !(num.toString().indexOf('.') >= 9);
}

答案 1 :(得分:0)

您提到了用户和字符数,因此我假设您希望在每次按键后过滤此输入。您可以使用内置的HTML5数字输入属性,但它们会在更改时进行测试,这意味着它们直到onblur才会进行测试。

下面的解决方案与oninput事件相关联,因此每次按键都会触发它。我们测试min和max,然后将值转换为字符串以测试没有太多小数位。如果有你可以修剪它,但我只是把它修圆了。

var decimalInput = document.getElementById('decimal-input');

decimalInput.oninput = function() {
  let decimalValue = decimalInput.value;

  if (decimalValue < 0.01) {
    decimalValue = 0.01;
  }

  if (decimalValue > 99999999.99) {
    decimalValue = 99999999.99;
  }

  let decimalString = decimalValue + '',
    decimalPos = decimalString.lastIndexOf('.');
  console.log(decimalPos);

  if (decimalPos != -1 && decimalString.length - decimalPos > 2) {
    decimalValue = Number(decimalValue).toFixed(2);
  }

  decimalInput.value = decimalValue;
}
<input type="number" max="99999999.99" min="0.01" step="0.01" name="decimal-input" id="decimal-input" />