How to allow only numbers with or without decimal values in Angular.js

How to allow only numbers with or without decimal values in Angular.js

The code is pretty simple:

angular
  .module('MyApp')
  .directive('numbersOnly', numbersOnly)
function numbersOnly(){
  return {
    require: 'ngModel',
    link: function(scope, element, attrs, modelCtrl) {
      modelCtrl.$parsers.push(function (inputValue) {
        if (inputValue == undefined) return ''
          var transformedInput = inputValue.replace(/[^\d]/g, '');
        if (transformedInput!=inputValue) {
          modelCtrl.$setViewValue(transformedInput);
          modelCtrl.$render();
        }

        return transformedInput;
      });
    }
  };
}

if you want to accept decimals also just replace:

var transformedInput = inputValue.replace(/[^\d]/g, '');

//for

var transformedInput = inputValue.replace(/[^-0-9\.]/g, '');

How to use it:

<input name="phone_number" numbers-only="" type="text">
No Comments

Post A Comment