JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js"></script>
<div ng-app="myapp" ng-controller="main">
<input type="text" min="0" max="99" ng-model="myNumber" number-mask />
<p>My Number: {{myNumber}}</p>
</div>
JavaScript
angular.module('myapp', [])
.controller('main', function($scope) {
$scope.myNumber;
}).directive('numberMask', function () {
return {
require: 'ngModel',
restrict: 'A',
link: function (scope, elem, attrs, ctrl) {
var oldValue = null;
scope.$watch(attrs.ngModel, function (newVal, oldVal) {
var min = parseInt(attrs.min) || 0;
var max = parseInt(attrs.max) || 10;
if (!between(newVal, min, max)) {
if (newVal > max)
ctrl.$setViewValue(max);
else if (newVal < min)
ctrl.$setViewValue(min);
else
ctrl.$setViewValue(oldValue);
ctrl.$render();
}else{
oldValue = newVal;
}
}, true);
function between(n, min, max) { return n >= min && n <= max; }
}
};
});