在用户将数字输入到输入字段时,已实现了一个功能(对于正在处理的网站)同时格式化电话号码。前端已使用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上才能将这个功能放在模糊上,因为这是一个要求