移动浏览器中带有角度js问题的电话号码格式

时间:2014-03-10 17:23:46

标签: javascript jquery angularjs

在用户将数字输入到输入字段时,已实现了一个功能(对于正在处理的网站)同时格式化电话号码。前端已使用html / css angularjs编码(虽然在角度js中效率不高)。 我使用ng-change指令调用格式化函数。 下面是正在调用的函数,当用户输入第7位数字时会进行格式化。

     $scope.FormatPhnNo =function(){
        var elem = angular.element("#userId");
        var userID=$scope.userId.replace(/[^\w\@\.]/g, '');
        userID=  userID.replace(/\s/g,'');
        var formattedId;
         if(isNaN(userID)){
            $scope.userId=userID;
            return;
        }
        else{


         if(userID.length < 7 || userID.length>10){
            $scope.userId=userID;
        }
        else if((userID.length > 6 && userID.length<11))  {
            var ctnArray=[];
            for (var i = 0, len = userID.length; i < len; i += 1) {
                if(ctnArray.length == 0){
                    ctnArray[0]="(";
                }
                else if(ctnArray.length ==4){
                    ctnArray[4]=")";
                    ctnArray[5]=" ";
                }
                else if(ctnArray.length ==9){
                    ctnArray[9]="-";
                }
                ctnArray.push(+userID.charAt(i));
                formattedId=ctnArray.join().replace(/[,]/g, '');
            }
            elem[0].value = '';
            elem[0].value = formattedId;

        }

        }
    };

直接将格式化的值分配给模型在某些版本的chrome中无法正常工作,因此使用element更改了值。 但是现在该功能在浏览器上工作正常,但在移动浏览器上创建了一个问题。 主要是光标放置问题,这是在第一次启动应用程序并输入一些值时发生的。如果我删除该字段中的所有输入数据,然后再次键入它工作正常。在格式化开始发生之后,即当用户在移动键盘上的十字按钮后输入7位数字以移除文本停止运行时。 有没有更好的方法来实现此功能。不想直接使用元素,但模型没有以任何其他方式更新。 这需要在ng-change上才能将这个功能放在模糊上,因为这是一个要求

0 个答案:

没有答案