防止输入[type = number]自动舍入浮点值

时间:2014-09-20 22:30:07

标签: javascript jquery html angularjs angularjs-directive

当用作输入[type = number]的值时,是否有办法防止浮点值被舍入。我不能根据要求使用任何其他类型。

例如,我无法使用值“3.00”绑定输入[type = number],它会自动舍入为“3”。

我正在尝试使用angularjs绑定值。

angular.module('app', [])
.controller('controller1', ['$scope', function ($scope){
  $scope.value=3.00;
}]);

<div ng-app="app" ng-controller="controller1">
  <input type="number" ng-model="value" /><br/>
  {{value}}<br/>
</div>

这是PEN的链接:http://codepen.io/cyrilpanicker/pen/aqucJ?editors=101

2 个答案:

答案 0 :(得分:1)

这是因为ngModel在解析后对值进行舍入。一种解决方法可能是使用优先级较低(-1)而不是ngModel(优先级0运行)的自定义指令来处理它,以便在ngModel解析后运行。并在指令寄存器中使用数字过滤器来重新格式化输入的模型值。

&#13;
&#13;
var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {
  $scope.value=3.00;
}).directive('formatNum', function(numberFilter){
  return {
    priority:-1, //<-- Important
    require:'ngModel',
    link:function(scope, elm, attrs, ngModel){
        ngModel.$formatters.push(format); //Push a formatter
        function format(){
          return numberFilter(ngModel.$modelValue , 2); //Round off to 2 dec
        }
    }
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller= "MainCtrl">
<input type="number" ng-model="value" format-num/><br/>
  {{value | number:2}}<br/>
</div>
&#13;
&#13;
&#13;  

答案 1 :(得分:0)

您可以使用number过滤器在显示时格式化数字。 {{值|数字:2}}将始终显示2dp:

<div ng-app="app" ng-controller="controller1">
  <input type="number" ng-model="value" /><br/>
  {{value | number:2}}<br/>
</div>