2015-02-02 9 views
6

Il progetto ui-mask in "Utilità UI angolare" (link) è un po 'troppo limitato.Maschera di immissione regex per angolare?

Ad esempio, la prima cifra di un numero di telefono statunitense deve essere 2-9. In ngPattern, dovrebbe essere

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

Così come posso scrivere una maschera di input per impedire agli utenti di immettere 0 o 1 in prima cifra? C'è qualche maschera di input migliore che dovremmo usare per Angular?

+0

Non sei sicuro di quello che vuoi. Se vuoi evitare di inserire quei numeri all'inizio puoi iniziare la tua espressione regolare con '^ [^ 01]' –

risposta

2

Credo che si può trovare la risposta qui: https://github.com/angular-ui/ui-utils/issues/16

Come spiegato nel link che si può ottenere la maschera di una variabile di ambito/regolatore, controllare l'ingresso e cambiare la maschera in base alle esigenze del tipo:

<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

Certo, ci sono così tanti commenti utili in quel link. Ma il migliore dal mio punto di vista era questo. – UserNeD