2017-02-03 3 views
0

Привет Я использую одну директиву, чтобы принимать только цифры в моем текстовом поле:Директива принять цифры и пустым в текстовом поле

HTML:

<form name="filtroForm"> 
    <input id="idMatricula" type="text" class="form-control" ng-model="filtros.Matricula" maxlength="20" numbers-only> 
... 

Модуль:

var app = angular.module('app', []); 
angular.module('sg-pbm').directive('numbersOnly', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope, element, attr, ngModelCtrl) { 
      function fromUser(text) { 
       if (text) { 
        var transformedInput = text.replace(/[^0-9]/g, ''); 
        if (transformedInput !== text) { 
         ngModelCtrl.$setViewValue(transformedInput); 
         ngModelCtrl.$render(); 
        } 
        return transformedInput; 
       } 
       return undefined; 
      } 
      ngModelCtrl.$parsers.push(fromUser); 
     } 
    }; 
}); 

Но когда Я использую в своем контроллере:

console.log($scope.filtroForm.$valid); 

Мое выражение возвращает false, если у моего текста нет данных после того, как я напечатаю что-нибудь, удалив его.

+0

Вы пытались ввести код: если пустая строка, то строка = 0? –

+2

'' – epascarello

ответ

1

Я изменил вашу директиву немного

app.directive('numbersOnly', function() { 
    return { 
     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; 
      }); 
     } 
    }; 
}); 

Посмотрите на этот plunker

Эта директива не позволит вам ввести ничего, кроме цифр в вашем поле ввода.

Смежные вопросы