对输入框的整数位数和小数位数做限制

由于需求,本人经常被要求对用户输入的住房面积,以及预算金额等等做不同的限制,所以写了一个统一验证的方法,该方法只对数字和小数点进行验证

使用方法

<input oninput=checkNum(this,3,3)>

函数
intNum表示整数位个数,必填 0表示整数位数不做限制
decNum表示小数位个数,选填 默认为0,表示没有小数

**function checkNum(obj,intNum=0,decNum=0) {
    var value=obj.value;
    var changeValue,t1,t2;
    switch (decNum){
            case 0:
                value=value.replace(/[^\d]/g,'');//去除数字以外的字符;
                value=value.replace(/^0\d+/g,'0');//防止整数位出现'00'的情况
                if(intNum!=0){
                    value=value.substr(0,intNum);
                }
                break;
            default:
                value=value.replace(/[^\d.]/g,'');//去除数字和小数点以外的字符;
                value=value.replace(/^[^\d]/g,'');//保证第一个字符是数字
                value=value.replace(/\.{2}/g,'.');//去除第二个小数点
                value=value.replace(/^0\d+/g,'0');
                changeValue=value.split('.');
                if(changeValue.length>1){//表示用户输入的既有整数又有小数
                    if(intNum==0){
                        t1=changeValue[0];
                    }else{
                        t1=changeValue[0].substr(0,intNum);
                    }
                    t2=changeValue[1].substr(0,decNum);
                    value=t1+'.'+t2;
                }else{
                    if(intNum!=0){
                        value=value.substr(0,intNum);
                    }
                }
                break;
        }
    if(obj.value!=value){
        obj.value=value;
    }
    return value;
}**

猜你喜欢

转载自blog.csdn.net/zlqzhlq/article/details/82631167
今日推荐