Angularjs。如何使输入字段看起来像253.3445.9621?

时间:2013-10-08 17:52:24

标签: twitter-bootstrap angularjs

如何在输入时使手机输入字段看起来像“253.3445.9621”。 如何才能使数字输入成为可能?

我希望模型中的值(或者说范围正确?将它们彼此混淆()等于“25334459621”,但是对于用户的输入它应该是。 我正在使用角度和自举。

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

谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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