JS-為金額添加千分位逗號分割符


前言:這個功能在前端頁面中使用的還是比較多的,正好我們的項目中也有使用此功能,不過YY同學寫的代碼不像個方法的樣子,一個入口中間又插了幾道子,所             以,我寫了下面這個方法,經過測試,適用性還是蠻好的,留在這里以備后用!

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <title>Format Currency</title>
    <style>
       input{width:360px;}
    </style>
    <script>
        /*
          獲取第一個輸入框中數據,格式化后放入第二個輸入框進行展示
        */
        function showNewNum() 
        {
           //獲取輸入的數據
           var value = document.getElementById('num').value;
           //將格式化的數據放入到新的輸入框中顯示
           document.getElementById('newNum').value = formatCurrency(value);
        }
        /*
          格式化數據,小數部分不做處理,對整數部分進行千分位格式化的處理,如果有符號,正常保留
        */
        function formatCurrency(num) 
        {
            if(num)
            {
                //將num中的$,去掉,將num變成一個純粹的數據格式字符串
                num = num.toString().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/>
    <input type="button" value="Please click ME" onclick="showNewNum();"/>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM