0

Is there a way to not bind value to model , and ONLY bind it to model when value is valid.

Narek Mamikonyan
  • 4,601
  • 2
  • 24
  • 30

1 Answers1

1

Use $parsers. The example below restricts input to your model for numbers only. Obviously you can change that to be whatever you require to make your input valid.

angular.module('app').
directive('onlyDigits', function () {

    return {
        restrict: 'A',
        require: '?ngModel',
        link: function (scope, element, attrs, modelCtrl) {
            modelCtrl.$parsers.push(function (inputValue) {
                if (inputValue == undefined) return '';
                var transformedInput = inputValue.replace(/[^0-9]/g, '');
                if (transformedInput !== inputValue) {
                    modelCtrl.$setViewValue(transformedInput);
                    modelCtrl.$render();
                }
                return transformedInput;
            });
        }
    };
});

<input type="text" name="number" only-digits>

Code sample comes from this SO question

Community
  • 1
  • 1
Brian McAuliffe
  • 2,099
  • 1
  • 16
  • 13