fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Проблема с маской?

Есть директива
app.directive('myMask', function($timeout, $rootScope) {
    var directive = {
        restrict: 'AEC',
        require: 'ngModel',
        link: function(scope, element, attrs, ngModelCtrl) {
            var isWithAutoUnMask = true;
            isWithAutoUnMask = !attrs.hasOwnProperty('withoutunmask');

            var maskFF = attrs.myMask;
            if (maskFF) {
                $timeout(function() {
                        $(element).inputmask({
                            mask: maskFF,
                            autoUnmask: isWithAutoUnMask,
                            showMaskOnFocus: true,
                            placeholder: " ",
                            definitions: {
                                '*': {
                                    validator: "[0-9]",
                                    cardinality: 1,
                                    casing: "lower",
                                    placeholder: "_"
                                },
                                'd': {
                                    validator: "[0-9]",
                                    cardinality: 1,
                                    casing: "lower",
                                    placeholder: " "
                                }
                            }
                        }).on('keyup paste', function() {
                            if ($(element).inputmask("isComplete")) {
                                ngModelCtrl.$setValidity('isComplete', true)
                            } else {
                                ngModelCtrl.$setValidity('isComplete', false)
                            }
                            var clearValue = $(element).val()
                            ngModelCtrl.$setViewValue(clearValue);
                            ngModelCtrl.$render();
                        })
                }, 10);
            }
        }
    }
    return directive
});


есть строка ввода

<input class="form-field" id="id_phone" ng-model="loginForm.loginPhone" my-mask="+7 (ddd) ddd dd dd"  name="phone" placeholder="телефон" type="text" focus_onend />


Если я ввожу номер телефона 9281234567 с клавиатуры - все ок. Интуитивно после +7 набираем код, затем телефон.. Отображается +7(928)123-45-67, в модели получаю 9281234567
Но если вставляю +79281234567 (просто вставляю скопированный номер телефона), либо если срабатывает автодополнение - отображается +7 (792) 812 34 56, в модели получаю 7928123456
Что мне сделать, чтобы номер и набирался и вставлялся корректно?
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 1
azrail_dev
@azrail_dev
Странная реализация маски. Быть может стоит заюзать что-то не из jQuery? Например ng-mask? Ну а вообще, в целом, можно попробовать навесить еще input, change :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы