JS-为⾦额添加千分位逗号分割符
前⾔:这个功能在前端页⾯中使⽤的还是⽐较多的,正好我们的项⽬中也有使⽤此功能,不过YY同学写的代码不像个⽅法的样⼦,⼀个⼊⼝中间⼜插了⼏道⼦,所以,我写了下⾯这个⽅法,经过测试,适⽤性还是蛮好的,留在这⾥以备后⽤!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Format Currency</title>
<style>
input{width:360px;}
</style>
<script>
/*
获取第⼀个输⼊框中数据,格式化后放⼊第⼆个输⼊框进⾏展⽰
*/
function showNewNum()
{
//获取输⼊的数据
var value = ElementById('num').value;
//将格式化的数据放⼊到新的输⼊框中显⽰
}
/
*
格式化数据,⼩数部分不做处理,对整数部分进⾏千分位格式化的处理,如果有符号,正常保留
*/
function formatCurrency(num)
{
if(num)
{
//将num中的$,去掉,将num变成⼀个纯粹的数据格式字符串
num = String().replace(/\$|\,/g,'');
//如果num不是数字,则将num置0,并返回
if(''==num || isNaN(num)){return 'Not a Number ! ';}
/
/如果num是负数,则获取她的符号
var sign = num.indexOf("-")> 0 ? '-' : '';
//如果存在⼩数点,则获取数字的⼩数部分
var cents = num.indexOf(".")> 0 ? num.substr(num.indexOf(".")) : '';
cents = cents.length>1 ? cents : '' ;//注意:这⾥如果是使⽤change⽅法不断的调⽤,⼩数是输⼊不了的
//获取数字的整数数部分
num = num.indexOf(".")>0 ? num.substring(0,(num.indexOf("."))) : num ;
//如果没有⼩数点,整数部分不能以0开头
if('' == cents){ if(num.length>1 && '0' == num.substr(0,1)){return 'Not a Number ! ';}}
//如果有⼩数点,且整数的部分的长度⼤于1,则整数部分不能以0开头
else{if(num.length>1 && '0' == num.substr(0,1)){return 'Not a Number ! ';}}
/
/针对整数部分进⾏格式化处理,这是此⽅法的核⼼,也是稍难理解的⼀个地⽅,逆向的来思考或者采⽤简单的事例来实现就容易多了
/*
也可以这样想象,现在有⼀串数字字符串在你⾯前,如果让你给他家千分位的逗号的话,你是怎么来思考和操作的?
字符串长度为0/1/2/3时都不⽤添加
字符串长度⼤于3的时候,从右往左数,有三位字符就加⼀个逗号,然后继续往前数,直到不到往前数少于三位字符为⽌
*/
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
{
num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
}
//将数据(符号、整数部分、⼩数部分)整体组合返回
return (sign + num + cents);
}
}
</script>
</head>
<body bgcolor="AliceBlue" align="center">
<input id="num" class=""/><br/>
<input id="newNum" class=""/><br/>
js在字符串中添加字符<input type="button" value="Please click ME" onclick="showNewNum();"/>
</body>
</html>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论