Format telephone and credit card numbers in AngularJS

前端 未结 17 2175
猫巷女王i
猫巷女王i 2020-11-30 18:29

Question one (formatting telephone number):

I\'m having to format a telephone number in AngularJS but there is no filter for it. Is there a way to u

17条回答
  •  情书的邮戳
    2020-11-30 19:21

    This is the simple way. As basic I took it from http://codepen.io/rpdasilva/pen/DpbFf, and done some changes. For now code is more simply. And you can get: in controller - "4124561232", in view "(412) 456-1232"

    Filter:

    myApp.filter 'tel', ->
      (tel) ->
        if !tel
          return ''
        value = tel.toString().trim().replace(/^\+/, '')
    
        city = undefined
        number = undefined
        res = null
        switch value.length
          when 1, 2, 3
            city = value
          else
            city = value.slice(0, 3)
            number = value.slice(3)
        if number
          if number.length > 3
            number = number.slice(0, 3) + '-' + number.slice(3, 7)
          else
            number = number
          res = ('(' + city + ') ' + number).trim()
        else
          res = '(' + city
        return res
    

    And directive:

    myApp.directive 'phoneInput', ($filter, $browser) ->
    
      require: 'ngModel'
      scope:
        phone: '=ngModel'
      link: ($scope, $element, $attrs) ->
    
        $scope.$watch "phone", (newVal, oldVal) ->
          value = newVal.toString().replace(/[^0-9]/g, '').slice 0, 10
          $scope.phone = value
          $element.val $filter('tel')(value, false)
          return
        return
    

提交回复
热议问题