简体   繁体   English

电话号码格式使用javascript功能显示不正确

[英]Phone number format displaying incorrectly with javascript function

Can I get a phone number formatted from 1234567891 to 123-456-7891 using Java script. 我可以使用Java脚本获取格式从1234567891到123-456-7891的电话号码吗? I have written a function below which is returning 我写了下面的函数返回
1 234-567-891.Did i miss anything below. 1 234-567-891.Did我错过了下面的任何内容。
Your suggestion is appreciated a lot. 非常感谢您的建议。
Code below is writen in angular-moment.js file for custom filters. 下面的代码写在angular-moment.js文件中,用于自定义过滤器。 Which later on I will be using in HTML. 稍后我将在HTML中使用。

.filter('phonenumber', function() {
             return function (number) {
                 if (!number) { return ''; }
                 number = String(number);
                 var fNumber = number;

                 var c = (number[0] == '1') ? '1 ' : '';
                    number = number[0] == '1' ? number.slice(1):number;
                    var area = number.substring(0,3);
                    var front = number.substring(3, 6);
                    var end = number.substring(6, 10);

                    if (front) {
                        fNumber  = (c + "" + area + "-" + front);   
                    }
                    if (end) {
                        fNumber += ("-" + end);
                    }
                    return fNumber ;
                };
            })

Checking for first 3 numbers. 检查前三个数字。 This scenario is reproduced only when I enter first number as 1 Any guidance on how to implement this would be greatly appreciated. 仅当我将第一个数字输入为1时,才会重现这种情况。将非常感谢您提供有关如何实现此目的的任何指导。

you dont needd to expicitly check for 1 : below code should work fine : 您不需要明确检查1:以下代码应该可以正常工作:

.filter('phonenumber', function() {
         return function (number) {
             if (!number) { return ''; }
             number = String(number);
             var fNumber = number;

                var area = number.substring(0,3);
                var front = number.substring(3, 6);
                var end = number.substring(6, 10);

                if (front) {
                    fNumber  = (area + "-" + front);   
                }
                if (end) {
                    fNumber += ("-" + end);
                }
                return fNumber ;
            };
        })

Suppose this is you HTML 假设这是您的HTML

<p class="number">2124771000</p>

And this you JS 这是你的JS

$(".number").text(function(i, text) {
        text = text.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
        return text;
    });

If you have validations for number to be more than 9 digits , you can try below code 如果您对数字的验证超过9位,则可以尝试以下代码

 angular.module("myApp", []).filter("phonenumber", function() { return function(number) { if (number) { number = number.toString(); return number.slice(0, 3) + "-" + number.slice(3, 6) + "-" + number.slice(6); } } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-app="myApp"> {{123456789 | phonenumber}} </body> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM