我是AngularJS的新手,陷入了这个复杂的事情。我必须对 HTML 输入进行过滤,该过滤器将接受数字(没有字母(的货币,逗号应在 3 位数字后自动实现,十进制应该在那里,并且应该在左侧附加美元符号。
我已经尝试了很多,但没有结果,这是必需的。我做了这个JavaScript函数,它做同样的事情,但是我将如何在输入框中输入时在AngularJS中实现它。
function formatPera(num) {
var p = num.toFixed(2).split(".");
return p[0].split("").reverse().reduce(function(acc, num, i, orig) {
return num + (i && !(i % 3) ? "," : "") + acc;
}, "") + "." + p[1];
}
var money = 1234;
money = formatPera(money);
console.log(money);
我已经搜索了很多并检查了已经部署的代码。
检查下面的代码。 它在我的最后完美地工作。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<div ng-app="app" ng-controller="ctrl">
<input type="text" ng-model="price"/> <br/>
{{price | INR}}
</div>
<script src="../lib/angular.js"></script>
<script>
var app = angular.module('app', []);
app.filter('INR', function () {
return function (input) {
var length = input.length;
if(input.length <= 3)
{
return input;
}
else {
var input = input.split('');
var output = input[length - 3] + input[length - 2] + input[length - 1];
var j = 2;
for(i=input.length-3;i--;i>=0)
{
if(j>1)
{
output = ',' + output;
j = 0;
}
if (i >= 0)
{
output = input[i] + output;
j++;
}
}
return output;
}
}
});
app.controller('ctrl', function ($scope) {
$scope.price = '4665987565';
});
</script>
</body>
</html>