Format telephone and credit card numbers in AngularJS

前端 未结 17 2171
猫巷女王i
猫巷女王i 2020-11-30 18:29

Question one (formatting telephone number):

I\'m having to format a telephone number in AngularJS but there is no filter for it. Is there a way to u

17条回答
  •  盖世英雄少女心
    2020-11-30 19:19

    Also, if you need to format telephone number on output only, you can use a custom filter like this one:

    angular.module('ng').filter('tel', function () {
        return function (tel) {
            if (!tel) { return ''; }
    
            var value = tel.toString().trim().replace(/^\+/, '');
    
            if (value.match(/[^0-9]/)) {
                return tel;
            }
    
            var country, city, number;
    
            switch (value.length) {
                case 10: // +1PPP####### -> C (PPP) ###-####
                    country = 1;
                    city = value.slice(0, 3);
                    number = value.slice(3);
                    break;
    
                case 11: // +CPPP####### -> CCC (PP) ###-####
                    country = value[0];
                    city = value.slice(1, 4);
                    number = value.slice(4);
                    break;
    
                case 12: // +CCCPP####### -> CCC (PP) ###-####
                    country = value.slice(0, 3);
                    city = value.slice(3, 5);
                    number = value.slice(5);
                    break;
    
                default:
                    return tel;
            }
    
            if (country == 1) {
                country = "";
            }
    
            number = number.slice(0, 3) + '-' + number.slice(3);
    
            return (country + " (" + city + ") " + number).trim();
        };
    });
    

    Then you can use this filter in your template:

    {{ phoneNumber | tel }}
    
    

提交回复
热议问题