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

Javascript 当小数点前的位数大于8且小数点后的位数大于2时,限制用户,javascript,Javascript,允许值 999 99.99 12345678.12 不准 123456789->需要限制用户,如果第9个字符是数字,则只能是十进制。尝试使用此功能: function isValidNumber(num) { if (!parseInt(num) || (num.toString().length >= 9 && (num.toString().indexOf('.') == -1 || num.toString().indexOf('.') >= 9)))

允许值 999 99.99 12345678.12

不准
123456789->需要限制用户,如果第9个字符是数字,则只能是十进制。

尝试使用此功能:

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);
}

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

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

var decimalInput=document.getElementById('decimal-input');
decimalInput.oninput=函数(){
让decimalValue=decimalInput.value;
if(小数值<0.01){
小数点=0.01;
}
如果(小数值>9999999.99){
小数点=9999999.99;
}
让decimalString=decimalValue+“”,
decimalPos=decimalString.lastIndexOf('.');
控制台日志(decimalPos);
if(小数位数!=-1&&decimalString.length-decimalPos>2){
小数=数字(小数)。toFixed(2);
}
小数输入值=小数值;
}

嗯。。。什么?再说一遍,允许值的列表如下:10 20.00 10203040.50 10203040不允许值:102030405.00 var x=number.value.split(“.”/[“102030405”,“00”]x[0]应始终最多为8位,如果用户尝试输入8位之后的任何数字,则输入文本框不允许。8位后如果用户只能输入小数,则允许在小数后输入2位(这是可选的)