javascript - AngularJS 在数字输入字段中显示 2 个小数点

标签 javascript angularjs input

我在将表单数据字段显示到小数点后 2 位时遇到问题。我将变量 $Scope.theItem.Charge 设置为小数点后两位:

$scope.theItem.charge = parseFloat(10 * 2).toFixed(2);

然后我将这些数据显示在一个可编辑的表单字段中,如下所示:

<input type="text" name="charge" id="charge" ng-model="theItem.charge">

这可以正常工作并显示结果,在本例中为 20.00。 但是,因为我们说这是一种“文本”输入类型,所以用户可以在该字段中输入任何文本,而不仅仅是数字。我希望简单地这样做:

<input type="number" name="charge" id="charge" ng-model="theItem.charge" step="0.01">

但这会返回以下错误:

angular.min.js:119 Error: [ngModel:numfmt]
http://errors.angularjs.org/1.5.9/ngModel/numfmt?p0=25.00
at angular.min.js:6
at Array. (angular.min.js:182)
at angular.min.js:293
at m.$digest (angular.min.js:144)
at m.$apply (angular.min.js:147)
at l (angular.min.js:98)
at D (angular.min.js:103)
at XMLHttpRequest.w.onload (angular.min.js:104)

有没有人知道如何解决这个问题?我尝试使用上面链接中描述的 Angular Directive(指令),但这对我的场景不起作用。

最佳答案

我们使用 ng-currency来处理这个问题。这似乎是处理输入字段中小数的最稳定方式。 ng-currency 确实以一种很好的方式验证和规范化您的 ng-model。因此,您无需再与分数或错误的用户输入数据作斗争。请检查此 demo plnkr .

AngularJS 应用

var app = angular.module('plunker', ['ng-currency']);

app.controller('ApplicationController', function($scope) {
  $scope.amount = '0.203';
});

查看

<div class="container" ng-controller="ApplicationController">
    <div class="row">
      <input type="text" 
             ng-model="amount"
             currency-symbol=""
             ng-currency 
             fraction="2" />
    </div>
</div>

--> Demo plnkr

关于javascript - AngularJS 在数字输入字段中显示 2 个小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074416/

相关文章:

php - 将下拉选择值传递到 URL

javascript - 在服务不工作的 Controller 之间传递数据

javascript - 如何使用jquery修改没有div Id的内部HTML

javascript - 用 ng-show 改变突然的 Angular

css - 如何删除输入文本元素上的边框突出显示

javascript - 如何直接显示input的值

javascript - CSS 单独的日期字段

javascript - 如何等待函数在 Angular 2 中完成执行?

javascript - 登录成功后返回 Angular 页面吗?

input - Julia 传递参数,读取命令行