动态更改输入类型编号小数位

时间:2018-03-29 13:43:14

标签: html angularjs input angular-filters

我有一个表单和一些输入类型编号。

我需要动态地将用户输入值向上舍入为某个可配置的精度(来自服务器,存在于ngmodel中,如ct.precision)。我的输入值可能是'',具体取决于初始值。

我正在尝试使用过滤器编号,但我不确定这是否应该如何使用它。 我曾尝试使用onChange,但我无法使用可配置值设置精度。

实现这一目标的最佳方法是什么?

<input
    id="quantityValue-{{ $index }}"
    class="my-quantity"
    ng-model="$ct.record[$index].newQuantity"
    type="number"
    required
    min="0"
    pattern="\d+(\.\d+)?"
    maxlength="15"
>

这就是我输入的样子。

1 个答案:

答案 0 :(得分:0)

尝试在输入字段和可配置的精度选择上使用ng-change可能是的任何内容,我选择了<select>)。这是一个没有验证的演示:

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $filter) {
  $scope.foo = function(x, n = 3) {
    $scope.x_ = Number($filter('number')(x, n));
  }
  $scope.precision = [0, 1, 2, 3, 4, 5];
  $scope.n = $scope.precision[0]; // default (optional)
  $scope.x = 0; // default (to remove NaN issues)
  $scope.foo($scope.x, $scope.n); // initialise precision
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">
  <select ng-model="n" ng-change="foo(x,n)" ng-options="p for p in precision">
</select>
  <hr>
  <input type="number" ng-model="x" ng-change="foo(x,n)">
  <br>{{x_}}
</div>

(舍入可能存在一些问题(责怪JavaScript ),其中舍入0.129999为{2}提供0.13之间的精度)