Принудительный круглый шаг в номере типа ввода с помощью AngularJS

В веб-приложении (AngualrJS 1.5 + HTML5) у меня есть тип ввода = "число". Я хочу перейти на 0,5. Проблема в том, что если пользователь пишет 0.7, форма не уведомляет об ошибке. Как сделать, чтобы число в поле автоматически округлялось?

Это html-код:

 <input type="number" ng-model="height" name="height" min="1" max="10000" step="0.5">

Я пытался добавить этот код js при сохранении страницы:

$scope.age = (Math.round($scope.age * 2) / 2).toFixed(1);

но я получаю эту ошибку в консоли:

angular.js?v=0.2:13708 Error: [ngModel:numfmt] Expected `6.0` to be a number

ОБНОВЛЕНИЕ: я сделал плункер: PLNKR


person panagulis72    schedule 21.09.2016    source источник
comment
jsFiddle или что-то в этом роде?   -  person Franky238    schedule 21.09.2016
comment
Похоже, вы назначаете String модели, но это должно быть число. Попробуйте parseFloat (ваша модель)   -  person Umakanta Behera    schedule 21.09.2016
comment
Я сделал плунжер   -  person panagulis72    schedule 21.09.2016


Ответы (1)


Взгляните на приведенный ниже код.

<body ng-app="numberExample">
  <script>
  angular.module('numberExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      $scope.age = 5;
      $scope.roundNo = function(){
        $scope.age = (Math.round($scope.age * 2) / 2);
      };
      $scope.save = function(){
      }
    }]);
</script>
<form name="myForm" ng-controller="ExampleController">

    <input type="number" name="input" ng-model="age"
           min="0" max="1000" step="0.5" ng-change="roundNo()" required>

 </form>
 <button ng-click="save()">Save</button>
</body>

Рабочий плункер здесь

person Umakanta Behera    schedule 21.09.2016