版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/p3118601/article/details/72886812
<div ng-controller="myController">
<input type="text" onblur="thousands(this)" onfocus="focusSelect(this)" ng-model="myValue">
</div>
<script>
//失去焦点成千分位
function thousands(thi){
// 获取当前ng-model变量
// $(angular.element(thi))转化为jquery对象
var qGetModel = $(angular.element(thi)).attr("ng-model");
// 获取$scope变量
var $scope = angular.element(thi).scope();
var num = Math.round(thi.value * 100) / 100; // 做保留两位数字的四舍五入
num = num.toString(); //将输入的数字转换为字符串
if(/^-?\d+\.?\d+$/.test(num)){ //判断输入内容是否为整数或小数
if(/^-?\d+$/.test(num)){ //判断输入内容是否为整数 包含负数和正数
num =num + ",00"; //将整数转为精度为2的小数,并将小数点换成逗号
}else{
num = num.toString().replace(/\./,','); //将小数的小数点换成逗号
}
while(/\d{4}/.test(num)){ //
/***
*判断是否有4个相连的数字,如果有则需要继续拆分,否则结束循环;
*将4个相连以上的数字分成两组,第一组$1是前面所有的数字(负数则有符号),
*第二组第一个逗号及其前面3个相连的数字;
* 将第二组内容替换为“,3个相连的数字,”
***/
num = num.replace(/(\d+)(\d{3}\,)/,'$1,$2');
}
num = num.replace(/\,(\d*)$/,'.$1'); //将最后一个逗号换成小数点
// console.log(num);
// console.log(thi.value = num)
thi.value = num;
$scope[qGetModel] = num; // 将数据赋值给ng-model变量 省去$apply()方法
// return num;
}else {
thi.value = '0.00';
// $scope[qGetModel] = "0.00";
}
// $scope.infot(); // 调用angularjs中的$scope.infot()函数
}
//获得焦点选中
function focusSelect(thi){
if (!thi.value)
return;
var qvalue = thi.value.toString(); //将输入的数字转换为字符串
qvalue = qvalue.replace(/[ ]/g,''); // 去除空格
qvalue = qvalue.replace(/,/g,''); // 去除,
qvalue = parseFloat(qvalue); // 去除小数点后为0的
thi.value = qvalue;
thi.select();
}
</script>
相关实用函数:
转化为jquery对象 $(angular.element(domElement)) 必须引入jquery
获取当前元素的$socpe: angular.element(domElement).scope()
获取当前app的injector: angular.element(domElement).injector()
获取当前元素的controller:angular.element(domElement).controller()