2015-02-02 5 views
6

ui-mask в проекте «Угловые UI Utils» (link) является слишком ограниченным.Маска ввода регулярных выражений для угловых?

Например, первая цифра номера телефона в США должна быть 2-9. В ngPattern, он должен быть

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

Так как я могу написать маску ввода, чтобы запретить пользователям ввод 0 или 1 в первой цифре? Есть ли какая-то лучшая маска ввода, которую мы должны использовать для Angular?

+0

Не уверен, чего вы хотите. Если вы хотите избежать ввода этих чисел в начале, вы можете запустить свое регулярное выражение с помощью '^ [^ 01]' –

ответ

2

Я думаю, вы можете найти ответ на свой вопрос здесь: https://github.com/angular-ui/ui-utils/issues/16

Как поясняется в ссылке, которую вы можете получить маску с переменной сфера/контроллера, проверить ввод и изменить маску по мере необходимости, как:

<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

Конечно, в этой ссылке так много полезных комментариев. Но лучшим в моей точке зрения был этот. – UserNeD