Как включить директиву проверки angularjs 1.0.x для входов с конечными / начальными пробелами? - PullRequest
0 голосов
/ 11 января 2019

У меня есть директива, которая проверяет ввод текста с помощью регулярного выражения. Я хочу запретить пользователю вводить пробелы. Директива прекрасно работает с пробелами внутри текста, но когда пользователь вводит конечные или начальные пробелы, проверка не запускается. Я знаю, что угловой ввод автоматически обрезает ввод текста, но я не могу использовать директиву ng-trim = "false", потому что моя версия angularjs - 1.0.6. Есть ли способ это исправить?

Я пробовал предложение из Как отключить обрезку входных данных в AngularJS? для angular 1.0.x, и это частично работает - проверка запускается, когда пользователь вставляет значение, которое содержит конечные пробелы, с помощью "ctrl + v "или мышь, но ввод с клавиатуры все еще не вызывает проверки.

пользовательская директива ngTrim, которая частично работает:

app.directive('ngTrim', function() {
    return {
        require: 'ngModel',
        priority: 300,
        link: function(scope, iElem, iAttrs, ngModel) {
            if (iAttrs.ngTrim === 'false') {
                ngModel.$parsers.unshift(function() {
                    return iElem.val();
                });
            }
        }
    }
});

1 Ответ

0 голосов
/ 11 января 2019

Если единственное, что вы хотели бы сделать, это запретить ввод пробелов, вы можете напрямую прикрепить слушатель ввода к элементу и удалить пробелы, когда они вводятся следующим образом:

iElem.bind('input', (eventData) => {
  if (eventData.data == ' ') {
    iElem.val(iElem.val().replace(/\s/g, ''));
  }
});

http://jsfiddle.net/2n6m8gtz/

...