2016-09-21 2 views
0

В веб-приложении (AngualrJS 1.5 + HTML5) У меня есть тип ввода = «число». Я хочу сделать шаг в 0.5. Проблема в том, что если пользователь пишет 0.7, форма не уведомляет об ошибке. Как я могу сделать автоматическое округление числа в поле?Force round step in input type number with AngularJS

Это 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

+1

jsFiddle или что-то подобное? – Franky238

+1

Похоже, вы назначаете String модели, но она должна быть number.Try parseFloat (yourmodel) –

+0

Я сделал plunker – panagulis72

ответ

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> 

Работа plunker here

+0

Большое спасибо! – panagulis72