允许的值 999 99.99 12345678.12
不允许 123456789 - >如果第9个字符是数字,则需要限制用户,它必须只是小数。
答案 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" />