<input type="text" onchange="this.value=validateNumber(8,2,this.value)"
onkeyup="this.value=validateNumber(8,2,this.value)"
onkeydown="this.value=validateNumber(8,2,this.value)" />
/**
* 正數(shù) 范圍 有小數(shù) 設置type=number 默認將.結尾的去掉
* @param precision
* @param scale
* @param value
* @returns {*}
*/
function validateNumber(precision,scale,value)
{
//不符合 數(shù)字
if (isNaN(value))
{
if(value == '.')
{
return "";
}
// 兩個. 不符合規(guī)范
if(value.split('.').length > 2)
{
return $.trim(value.substr(0,value.length-1));
}
//解決 中文輸入bug
return $.trim(value.replace(/[^0-9|^.]/g,''));
}
var tmpVal = parseFloat(value);
if(value != "")
{
var valueArray = value.split('.');
//去前綴0 例如 01 001
if(value.indexOf('.') == value.length - 1)
{
value = parseFloat(value);
value = value + ".";
}
else if(valueArray.length == 2)
{
value = parseFloat(value);
var val1 = parseFloat(valueArray[1]);
if(val1 == 0)
{
value = value + ".";
for(var i = 0; i < valueArray[1].length; i++)
{
value += "0";
}
}
else
{
value = value + "";
}
}
else
{
value = parseFloat(value);
value = value + "";
}
}
var maxVal = '';
//var minVal = '-'; //如果還需要判斷負數(shù) 將0換成minVal
if(precision <= 0 || scale < 0 || scale > precision)
{
alert("validateNumber函數(shù)參數(shù)錯誤喷屋!");
return '';
}
//整數(shù)位數(shù)小
for (var i = 0;i < precision-scale; i++)
{
maxVal += '9';
}
//有小數(shù)
if(scale > 0)
{
maxVal += '.';
for(var i = 0;i < scale;i++)
{
maxVal += '9';
}
}
else
{
//判斷是否有小數(shù) 刪除小數(shù)點和小數(shù)點后面的數(shù)
if((value.indexOf('.')+1) > 0)
{
return $.trim(value.substr(0,value.length-1));
}
}
if(tmpVal >= 0 && tmpVal <= maxVal)
{
if(scale > 0)
{
//判斷是否有小數(shù) 小數(shù)長度不能超過scale
if(value.indexOf('.') > 0)
{
if(value.substr(value.indexOf('.')+1,value.length-1).length > scale)
{
return $.trim(value.substr(0,value.length-1));
}
}
}
return $.trim(value);
}
else
{
return $.trim(value.substr(0,value.length-1));
}
}