使用angularjs而不使用任何插件的价格输入掩码

使用angularjs而不使用任何插件的价格输入掩码,angularjs,Angularjs,有谁能帮我写一个输入掩码,在不使用任何插件的情况下使用angularjs格式化价格。 我想如果用户写56,那么在价格字段中,它会自动在第二位之后出现一个点,如果用户只输入56,那么它显示为56.00。如果有人只写一个数字3(比如),那么它应该是03.00。我只需要点前两位和点后两位 我已经试过了,但在写下第二个数字后,它不会自动显示一个点 angular.module('myApp.controllers', []). controller('MyCtrl1', ['$scope',func

有谁能帮我写一个输入掩码,在不使用任何插件的情况下使用angularjs格式化价格。 我想如果用户写56,那么在价格字段中,它会自动在第二位之后出现一个点,如果用户只输入56,那么它显示为56.00。如果有人只写一个数字3(比如),那么它应该是03.00。我只需要点前两位和点后两位

我已经试过了,但在写下第二个数字后,它不会自动显示一个点

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;
    };
});