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

来源:互联网 发布:网络投资与理财排名 编辑:程序博客网 时间:2024/04/27 17:04

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

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<array.length;i++){                          returnV+="."+array[i];                      }                      element[0].value=returnV;                      $parse(attrs['ngModel']).assign(scope, formatV);                }                            scope.$watch(attrs.ngModel,function(){                    limit();                })            }            };    })

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


<input ng-model="money" price digits="1"/>




阅读全文
0 0