A directive to format phone number

后端 未结 7 1920
梦毁少年i
梦毁少年i 2021-01-02 00:33

I was wondering how to automatically format a number in an input field using an angularjs directive? When I type in an input field say 6042919283 I want it to be shown as 6

7条回答
  •  甜味超标
    2021-01-02 01:12

    Wasn't a big fan of any of the answers here so came up with a directive of my own. It formats number with white space. Doesn't use jquery and you don't have to track key strokes.

    .directive('reformatPhoneNumber', function() {
        return {
          require: 'ngModel',
          link: function(scope, element, attrs, modelCtrl) {
    
            modelCtrl.$parsers.push(function(number) {
              var transformedNumber = number;
    
              if (number.match(/^\d{4}$/)) {
                transformedNumber = number.slice(0, 3) + " " + number.slice(3);
              }
              if(number.match(/^[\d\s]{8}$/)){
                transformedNumber = number.slice(0, 7) + " " + number.slice(7);
              }
    
              if (number.length > 12) {
                transformedNumber = number.slice(0, 12);
              }
              if (transformedNumber !== number) {
                modelCtrl.$setViewValue(transformedNumber);
                modelCtrl.$render();
              }
              return transformedNumber;
            });
          }
        };
      });
    

提交回复
热议问题