验证数字可以有千分符可以有0个1个小数点小数点后输入后四舍五入保留两位(写个js验证真费劲)
2008-08-04 19:54
836 查看
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript" language="javascript">
function FormatNumber(srcStr,nAfterDot) //nAfterDot小数位数
{
for(var i = 0 ; i < srcStr.length-1 ; i++)
{
srcStr=srcStr.replace(",","");
}
var srcStr,nAfterDot;
var resultStr,nTen;
srcStr = "" + srcStr + "" ;
strLen = srcStr.length;
dotPos = srcStr.indexOf(".",0);
if (dotPos == -1)
{
resultStr = srcStr+".";
for (i=0;i<nAfterDot;i++)
{
resultStr = resultStr+"0";
}
}
else
{
if ((strLen - dotPos - 1) >= nAfterDot)
{
nAfter = dotPos + nAfterDot + 1;
nTen =1;
for(j = 0; j < nAfterDot; j++)
{
nTen = nTen*10;
}
resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
}
else
{
resultStr = srcStr;
for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++)
{
resultStr = resultStr + "0";
}
}
}
resultStr= "" + resultStr;
if(resultStr.indexOf(".")=="-1")
{
resultStr1=resultStr;
}
else
{
resultStr1 = resultStr.substring(0 , resultStr.indexOf("."));
}
var words = resultStr1.split("");
resultStr1="";
for( i = 0; i<words.length ;i++)
{
if( i!=0 && (i+1)%3 == 0)
{
resultStr1= "," + words[words.length-i-1] + resultStr1;
}
else
{
resultStr1= words[words.length-i-1] + resultStr1;
}
}
if(words.length%3 == 0)
{
resultStr1=resultStr1.substring(1);
}
if(resultStr.indexOf(".")=="-1")
{
resultStr=resultStr1 + ".00";
}
else
{
resultStr=resultStr1 + resultStr.substring(resultStr.indexOf(".") , resultStr.length);
}
return resultStr;
}
function isDigit(s)
{
var patrn=/^-?[0-9\,]*\.?\d*$/;
if (!patrn.exec(s))
{
return false;
}
else
{
return true
}
}
var Pre="";
function a(str)
{
Pre=str.value;
}
function b(str)
{
var a=str.value;
if(a!="")
{
var b=isDigit(str.value);
if(!b)
{
str.value=Pre;
Label1.style.display="block";
}
else
{
Label1.style.display="none";
}
}
}
function d(str)
{
str.value= FormatNumber(str.value,2);
if(str.value==""||str.value==".00")
{
str.value="0";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Text1" type="text" onkeypress="a(this)" onpropertychange="b(this)" onblur="d(this)"/>
<asp:Label ID="Label1" runat="server" Text="格式不正确" BackColor=red style="display:none"></asp:Label>
</div>
</form>
</body>
</html>
<head runat="server">
<title>无标题页</title>
<script type="text/javascript" language="javascript">
function FormatNumber(srcStr,nAfterDot) //nAfterDot小数位数
{
for(var i = 0 ; i < srcStr.length-1 ; i++)
{
srcStr=srcStr.replace(",","");
}
var srcStr,nAfterDot;
var resultStr,nTen;
srcStr = "" + srcStr + "" ;
strLen = srcStr.length;
dotPos = srcStr.indexOf(".",0);
if (dotPos == -1)
{
resultStr = srcStr+".";
for (i=0;i<nAfterDot;i++)
{
resultStr = resultStr+"0";
}
}
else
{
if ((strLen - dotPos - 1) >= nAfterDot)
{
nAfter = dotPos + nAfterDot + 1;
nTen =1;
for(j = 0; j < nAfterDot; j++)
{
nTen = nTen*10;
}
resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
}
else
{
resultStr = srcStr;
for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++)
{
resultStr = resultStr + "0";
}
}
}
resultStr= "" + resultStr;
if(resultStr.indexOf(".")=="-1")
{
resultStr1=resultStr;
}
else
{
resultStr1 = resultStr.substring(0 , resultStr.indexOf("."));
}
var words = resultStr1.split("");
resultStr1="";
for( i = 0; i<words.length ;i++)
{
if( i!=0 && (i+1)%3 == 0)
{
resultStr1= "," + words[words.length-i-1] + resultStr1;
}
else
{
resultStr1= words[words.length-i-1] + resultStr1;
}
}
if(words.length%3 == 0)
{
resultStr1=resultStr1.substring(1);
}
if(resultStr.indexOf(".")=="-1")
{
resultStr=resultStr1 + ".00";
}
else
{
resultStr=resultStr1 + resultStr.substring(resultStr.indexOf(".") , resultStr.length);
}
return resultStr;
}
function isDigit(s)
{
var patrn=/^-?[0-9\,]*\.?\d*$/;
if (!patrn.exec(s))
{
return false;
}
else
{
return true
}
}
var Pre="";
function a(str)
{
Pre=str.value;
}
function b(str)
{
var a=str.value;
if(a!="")
{
var b=isDigit(str.value);
if(!b)
{
str.value=Pre;
Label1.style.display="block";
}
else
{
Label1.style.display="none";
}
}
}
function d(str)
{
str.value= FormatNumber(str.value,2);
if(str.value==""||str.value==".00")
{
str.value="0";
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Text1" type="text" onkeypress="a(this)" onpropertychange="b(this)" onblur="d(this)"/>
<asp:Label ID="Label1" runat="server" Text="格式不正确" BackColor=red style="display:none"></asp:Label>
</div>
</form>
</body>
</html>
相关文章推荐
- 页面输入框js正则验证输入值为数字,且只保留小数点后两位
- 页面输入框js正则验证输入值为数字,且只保留小数点后两位
- Js验证 :只能输入数字和小数点 验证是否是数字 js取float型小数点后两位
- js 输入int类型数字后自动在后面加.00,输入double型保留小数点后两位
- js 输入int类型数字后自动在后面加.00,输入double型保留小数点后两位
- 页面输入框js正则验证输入值为数字,且只保留小数点后四位
- JS格式化数字保留两位小数点示例代码
- iOS最完美的UITextField中输入金额,只能输入数字和小数点,保留两位小数点且0放在首位
- JS格式化数字保留两位小数点示例代码
- input只能输入数字和小数点,并且只能保留小数点后两位
- JS限制input输入的为数字并且有小数的时候最多保留两位小数
- js方法格式化数字,加入千分符,并可以指定小数点位数
- JS格式化数字保留两位小数点示例代码
- JS验证输入的是否是数字及保留几位小数问题
- js 验证文本框只能输入数字和小数点
- //js验证数字输入,以及保留俩位
- edit中只能输入数字、小数点(只可以1个小数点)和负号+多个edit共用一个事件
- 关于EditText输入数字时候限制为一个亿的问题,且保留小数点两位小数
- JS对数字进行货币格式化并且保留两位小数点,小数用0补全
- JS格式化数字保留两位小数点