Разделяйте числа символом - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сделать несколько базовых c angular проверок формы.

<input type="text" class="form-control" id="bank-name" name="scode" ng-class="{ 'error' : (form.scode.$invalid && form.scode.$touched) }" maxlength="6" required numbers-only/>
              <div ng-show="form.$submitted || form.scode.$touched">
                <p class="error" ng-show="form.bankname.$error.required">
                  scode is required.
                </p>
              </div>

Пока это хорошо. Вход принимает только числа и имеет максимальная длина , поскольку я использовал для него одну директиву.

директива только для чисел

(function() {
   angular.module('app').directive('numbersOnly', function() {
      return {
         require : 'ngModel',
         link : function(scope, element, attrs, ngModelCtrl) {
             function insertdash(val) {
           var count = 2;
           var i = 0;
           if (val.length > 2) { return val.replace(/(\d{2})/g, function(match, capture) {
              return (i++ < count) ? capture + '-' : capture;
           }); }

        }
            function fromUser(text) {
               if (text) {
                  var transformedInput = text.replace(/[^0-9]/g, '');
                  if (transformedInput !== text) {
                     ngModelCtrl.$setViewValue(transformedInput);
                     ngModelCtrl.$render();
                  }
                  return insertdash(transformedInput);
               }
               return undefined;
            }
            ngModelCtrl.$parsers.push(fromUser);
         }
      }
   });
})();

**

Проблема При связывании мне нужно разделить числа при связывании вот так 11-11-11 . Я думаю, что мне нужно использовать регулярные выражения, о которых я почти ничего не знаю.

Редактировать: Я пытался использовать функцию insert da sh, но она также не работает

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете сделать это с помощью этой простой функции:

function chunk(str, n) {
    var ret = [];
    var i;
    var len;

    for(i = 0, len = str.length; i < len; i += n) {
       ret.push(str.substr(i, n))
    }

    return ret
};
chunk("11111111", 2).join('-');

Пример:

function chunk(str, n) {
    var ret = [];
    var i;
    var len;

    for(i = 0, len = str.length; i < len; i += n) {
       ret.push(str.substr(i, n))
    }

    return ret
};

var numbers = 111111111111;
var result1 = chunk(numbers.toString(), 2).join('-');

var numbersAsString = "111111111111"
var result2 = chunk(numbersAsString, 2).join('-');

console.log("result1: ", result1)
console.log("result2: ", result2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...