Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. .directive('phoneInput', function($filter, $browser) {
  2. return {
  3. require: 'ngModel',
  4. link: function($scope, $element, $attrs, ngModelCtrl) {
  5. var listener = function() {
  6. var value = $element.val().replace(/^\+/, '0').replace(/[^0-9]/g, '');
  7. $element.val($filter('tel')(value, false));
  8. };
  9.  
  10. // This runs when we update the text field
  11. ngModelCtrl.$parsers.push(function(viewValue) {
  12. return viewValue.replace(/^\+/, '0').replace(/[^0-9]/g, '').slice(0,12);
  13. });
  14.  
  15. // This runs when the model gets updated on the scope directly and keeps our view in sync
  16. ngModelCtrl.$render = function() {
  17. $element.val($filter('tel')(ngModelCtrl.$viewValue, false));
  18. };
  19.  
  20. $element.bind('change', listener);
  21. $element.bind('keydown', function(event) {
  22. var key = event.keyCode;
  23. // If the keys include the CTRL, SHIFT, ALT, or META keys, or the arrow keys, do nothing.
  24. // This lets us support copy and paste too
  25. if (key == 91 || (15 < key && key < 19) || (37 <= key && key <= 40)){
  26. return;
  27. }
  28. $browser.defer(listener); // Have to do this or changes don't get picked up properly
  29. });
  30.  
  31. $element.bind('paste cut', function() {
  32. $browser.defer(listener);
  33. });
  34. }
  35.  
  36. };
  37. })
  38. .filter('tel', function () {
  39. return function (tel) {
  40. if (!tel) { return '+1'; }
  41.  
  42. var value = tel.toString().trim().replace(/^\+/, '0');
  43. if (value.match(/[^0-9]/)) {
  44. return tel;
  45. }
  46.  
  47. var code, country, city, number;
  48. code = '1';
  49. value = value.slice(2);
  50.  
  51.  
  52. switch (value.length) {
  53. case 1:
  54. case 2:
  55. case 3:
  56. city = value;
  57. break;
  58.  
  59. default:
  60. city = value.slice(0, 3);
  61. number = value.slice(3);
  62. }
  63.  
  64. if(number){
  65. if(number.length>5){
  66. number = number.slice(0, 3) + '-' + number.slice(3,5)+ '-' + number.slice(5,7);
  67. }
  68. else if (number.length>3){
  69. number = number.slice(0, 3) + '-' + number.slice(3,7);
  70. }
  71. else{
  72. number = number;
  73. }
  74.  
  75. return ( "+"+code+"(" + city + ") " + number).trim();
  76. }
  77. else{
  78. return "+"+code+"(" + city;
  79. }
  80.  
  81. };
  82. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement