2013-10-08 32 views
1

如何在输入时使手机输入字段看起来像“253.3445.9621”。 以及如何仅使数字输入成为可能?我想要在模型中的值(或正确地说是范围?将它们与对方()相混淆,等于“25334459621”,但对于用户输入应该与 我正在使用角度和自举。Angularjs。如何使输入字段看起来像253.3445.9621?

<input id="contactn" name="contactn" placeholder="" class="input" type="text" 
          ng-model="data.contact"> 

谢谢

+2

据我所知,您想要将输入[text]中的值的显示格式设置为253.3445.9621,并将模型保留为25334459621.您应该拥有看看AngularUI的ui-mask(http://angular-ui.github.io/ui-utils/)!然后你可以添加指令:ui-mask =“999.9999.9999”,它只会格式化显示值。 – jpmorin

回答

1

我会用指令:

HTML

<input type="text" ng-model="test" separator="number" /> 

指令

app.directive('separator', ['$filter', function($filter) { 
    return { 
     require: '?ngModel', 
     link: function(scope, elem, attrs, ctrl) { 
      if (!ctrl) return; 


      ctrl.$formatters.unshift(function(a) { 
       return $filter(attrs.format)(ctrl.$modelValue) 
      }); 


      ctrl.$parsers.unshift(function(viewValue) { 
       var plainNumber = viewValue.replace(/[^\d|\-+|\.+]/g, ''); 
       elem.val($filter('number')(plainNumber)); 
       return plainNumber; 
      }); 
     } 
    }; 
}]); 

Fiddle

图片:

enter image description here

+0

它不支持请求的格式999.999.9999。而且我只能放0,它停在2个字符。 – jpmorin

+0

@jpmorin因为我使用逗号代替。您可以轻松更换,看到图像 –

+0

它的工作原理,谢谢! – Sol

0

你应该研究创建自己的自定义directive使用ngModelController用于将输入限制为有效的电话号码格式。你可以去掉'。'在格式验证之后的指令内。

1

Angular UI-Mask是最好的解决方案。它基于jQuery Mask插件,已经很好地审查过了:

相关问题