使用angularjs而不使用任何插件的价格输入掩码
有谁能帮我写一个输入掩码,在不使用任何插件的情况下使用angularjs格式化价格。 我想如果用户写56,那么在价格字段中,它会自动在第二位之后出现一个点,如果用户只输入56,那么它显示为56.00。如果有人只写一个数字3(比如),那么它应该是03.00。我只需要点前两位和点后两位 我已经试过了,但在写下第二个数字后,它不会自动显示一个点使用angularjs而不使用任何插件的价格输入掩码,angularjs,Angularjs,有谁能帮我写一个输入掩码,在不使用任何插件的情况下使用angularjs格式化价格。 我想如果用户写56,那么在价格字段中,它会自动在第二位之后出现一个点,如果用户只输入56,那么它显示为56.00。如果有人只写一个数字3(比如),那么它应该是03.00。我只需要点前两位和点后两位 我已经试过了,但在写下第二个数字后,它不会自动显示一个点 angular.module('myApp.controllers', []). controller('MyCtrl1', ['$scope',func
angular.module('myApp.controllers', []).
controller('MyCtrl1', ['$scope',function($scope) {
$scope.phoneNumber;
$scope.show = false;
var count = 0;
$scope.update = function(){
var value = $scope.phoneNumber.toString().trim().replace(/^\+/, '');
if (value.match(/[^0-9.]/)) {
$scope.phoneNumber = 0;
$scope.show = true;
return;
}
$scope.show = false;
var pre, price, number ,post;
switch (value.length) {
case 1: // +1PPP####### -> C (PPP) ###-####
if(value == ".")
{
pre = "0";
price = 0;
number = 0;
post = 0;
}
else{
pre = 0;
price = value;
number = 0;
post = 0;
}
break;
case 2: // +CPPP####### -> CCC (PP) ###-####
if(value[0] == ".")
{
pre = "0";
price = 0;
number = value[1];
post = 0;
}
else if(value[1] == ".")
{
pre = 0;
price = value[0];
number = 0;
post = 0;
}
else
{
pre = value[0];
price = value[1];
number = 0;
post = 0;
}
break;
case 3: // +CCCPP####### -> CCC (PP) ###-####
if(value[0] == ".")
{
pre = "0";
price = 0;
number = value[1];
post = value[2];
}
else if(value[1] == ".")
{
pre = 0;
price = value[0];
number = value[2];
post = 0;
}
else if(value[2] == ".")
{
pre = value[0];
price = value[1];
number = 0;
post = 0;
}
else
{
pre = value[0];
price = value[1];
number = value[2];
post = 0;
}
break;
case 4:
if(value[0] == ".")
{
pre = "0";
price = 0;
number = value[2];
post = value[3];
}
else if(value[1] == ".")
{
pre = 0;
price = value[0];
number = value[2];
post = value[3];
}
else if(value[2] == ".")
{
pre = value[0];
price = value[1];
number = 0;
post = value[3];
}
else
{
pre = value[0];
price = value[1];
number = value[2];
post = value[3];
}
break;
default:
pre = value[0];
price = value[1];
number = value[2];
post = value[3];
}
$scope.phoneNumber = (pre + price +"." + number + post).trim();
};
}])
你是说像这样
HTML
价格:{Price | customNumber}
JS
app=angular.module('myApp',[]);
app.filter('customNumber',函数($filter){
返回函数(输入){
输入=$filter('number')(输入%100,2);
返回(输入<10)?“0”+输入:输入;
};
});
您能用HTML模板提供简单的fiddle或update问题吗?不,这不是关于使用过滤器的概念,它类似于jquery的inputmask概念。我更新了我的答案和fiddle。这更像你想要的吗?它显示的输出像123444.00或12222.55,但我希望它应该显示12.55,这意味着,点前只有2位,点后只有2位,但无论如何你做得很好。再次感谢你的更新。现在,价格无法达到100英镑。您可以为
=100
添加一个例外,因为数字筛选器可能会对99.999
进行四舍五入。
<div ng-app="myApp">
<input type="number" ng-model="price"/>
Price: {{price | customNumber}}
</div>
app = angular.module('myApp', []);
app.filter('customNumber', function($filter) {
return function(input) {
input = $filter('number')(input % 100, 2);
return (input < 10) ? '0' + input : input;
};
});