JavaScript

超轻量级php框架startmvc

angular 实现的输入框数字千分位及保留几位小数点功能示例

更新时间:2020-07-13 17:54:01 作者:startmvc
本文实例讲述了angular实现的输入框数字千分位及保留几位小数点功能。分享给大家供大家

本文实例讲述了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<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"/>

PS:这里再为大家推荐几款在线计算工具供大家参考使用:

在线投资理财计算器: http://tools.jb51.net/jisuanqi/touzilicai_calc

在线存款计算器: http://tools.jb51.net/jisuanqi/cunkuan_calc

科学计算器在线使用_高级计算器在线计算: http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器: http://tools.jb51.net/jisuanqi/jsq

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