2013-10-08 61 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插件,已經很好地審查過了:

相關問題