2017-02-03 27 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

您是否嘗試過編碼:如果爲空字符串,則string = 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

該指令不會讓你輸入任何東西,除了在你的輸入框中的數字。

相關問題