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