2015-02-02 14 views
6

Die ui-mask in 'Angular UI Utils' Projekt (link) ist ein bisschen zu begrenzt.Regex Eingabemaske für eckige?

Zum Beispiel sollte die erste Ziffer einer US-Telefonnummer 2-9 sein. In ngPattern, sollte es

ng-pattern="/^\([2-9]\d{2}\)\d{3}-\d{4}(x\d{1,4})?$/" 

sein Also, wie kann ich eine Eingabemaske schreiben Benutzer zu verhindern, 0 oder 1 in der ersten Ziffer eingeben? Gibt es eine bessere Eingabemaske für Angular?

+0

Nicht sicher was du willst. Wenn Sie vermeiden möchten, diese Zahlen zu Beginn einzugeben, können Sie Ihre Regex mit '^ [^ 01]' –

Antwort

2

Ich denke, Sie Ihre Antwort finden Sie hier: https://github.com/angular-ui/ui-utils/issues/16

Wie es in dem Link erklärt die Maske von einem Umfang/Reglergröße erhalten können, überprüfen Sie die Eingabe und die Maske ändern wie benötigt:

<input type="text" ui-mask="{{mask}}" ng-keyup="onKeyUp()" ng-model="myinput"> 


$scope.myinput = ''; 
var defaultMask = '(99) 9999-9999'; 
$scope.mask = defaultMask; 
$scope.onKeyUp = function(){ 
    if ($scope.myinput.slice(0,3) == '119') { // (11) 9 means mobile, or instead, you could use a regex 
    $scope.mask = '(99) 99999-9999'; 
    } else { 
    $scope.mask = defaultMask; 
    } 
}; 
+0

starten. Sicher, es gibt so viele nützliche Kommentare in diesem Link. Aber der beste meiner Ansicht nach war dieser. – UserNeD