angular 输入框数字千分位、保留几位小数点

网上查到一个关于千分位的指令,我稍微做了点完善,通用指令代码

myApp.directive('price', function($parse) {
          return {  
            link: function (scope, element, attrs, ctrl) {  
                //控制输入框只能输入数字和小数点  
                function limit(){  
                    var limitV=element[0].value;  
                    limitV=limitV.replace(/[^0-9.]/g,"");
                    //处理0开头的整数
                    if ((/^0+[0-9]+$/).test(limitV)) {
                        limitV=limitV.replace(/\b(0+)/gi,"");
                    }
                    //限定小数点后的位数
                    var digits =  attrs['digits']?Number(attrs['digits']):2;
                    if (limitV*Math.pow(10,digits)%1!=0) {
                        var index = limitV.indexOf('.');
                        var last = index+digits+1;
                        limitV = (""+limitV).substring(0,last);
                    }
                    element[0].value=limitV;  
                    $parse(attrs['ngModel']).assign(scope, limitV);
                    format();  
                }  
          
                //对输入数字的整数部分插入千位分隔符  
                function format(){  
                    var formatV=element[0].value;  
                    var array=new Array();  
                    array=formatV.split(".");  
                    var re=/(-?\d+)(\d{3})/;  
                    while(re.test(array[0])){  
                        array[0]=array[0].replace(re,"$1,$2")  
                    }  
                    var returnV=array[0];  
                    for(var i=1;i

html代码的引用,digits传的是小数点后保留几位,默认不传保留2位






你可能感兴趣的:(JavaScript)