javascript - 防止 input[type=number] 自动舍入浮点值

标签 javascript jquery html angularjs angularjs-directive

有没有一种方法可以防止浮点值在用作输入 [type=number] 的值时被四舍五入。我不能根据要求使用任何其他类型。

例如,我无法绑定(bind)值为“3.00”的输入[type=number],它会自动四舍五入为“3”。

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

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

最佳答案

那是因为 ngModel 在解析后对值进行了四舍五入。一种解决方法是使用优先级 (-1) 低于 ngModel(以 0 优先级运行)的自定义指令来处理它,以便它在 ngModel 解析后运行。并在指令中注册一个格式化程序,它将使用数字过滤器重新格式化输入的模型值。

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

关于javascript - 防止 input[type=number] 自动舍入浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953903/

相关文章:

javascript - 使用 javascript 从 HTML 表中获取元素

javascript - 使用同一页面上另一个日历中的日期更改 Bootstrap 日期选择器日历中的日期?

c# - 如何结合按钮中的脚本和 Action

jquery - TypeError : $(. ..).cycle 不是函数:JSF 应用程序中的 jQuery 循环

jquery - HTML 和 CSS 以便在使用 jQuery 向下滑动内容时固定图像

jquery - 验证共享相同名称的输入

php - 使用 jQuery、PHP 和 MySQL 为单选按钮加载 JSON 数据

javascript - 不可见的 reCAPTCHA - 缺少必需的参数 : sitekey

javascript - v-显示嵌套数组项是否与过滤数组匹配

javascript - JS数组: how to compare two and create third