【问题标题】:format phone number using angularJs使用angularJs格式化电话号码
【发布时间】:2015-05-16 11:07:26
【问题描述】:

如何使用 angularjs 将 (99) 9999-9999 之类的数字格式化为:9999999999?有人告诉我使用phoneformat.js,但我不知道如何在我的项目中实现它

【问题讨论】:

  • 我将从Install Instructions 开始,然后向下移动到FAQ。最后,查看Demo 部分。然后尝试一下,当您遇到困难时我们会提供帮助:)

标签: javascript angularjs number-formatting phone-number angular-filters


【解决方案1】:

我有一个输入字段,我需要从用户那里获取电话号码,但只有数字,以便使用数据库中的电话号码轻松索引。我在 ng-keyup 上使用了 .replace,因此当用户键入时,非数字字符会被删除。

在html中

<input ng-keyup="formatNum()" ng-model='data.phone' placeholder="Phone Number" />  

在控制器中

$scope.formatNum = function() {
 if ($scope.data.phone)
      $scope.data.phone = $scope.data.phone.replace(/\D/g, "");
};

【讨论】:

  • 如果没有保存在此表单中 +9334 46437658 0093 3446437658 03446437658 获取此表单中的电话号码 3446437658
【解决方案2】:

就像 talemyn 说的那样......解决方案只是删除不需要的字符......我猜的角度方式是通过过滤器......这是jsfillde 举个例子……

myApp.filter('phoneToNum', function() {
    return function(input, scope) {
        return input.replace(/\D/g, "");
    }
});

现在,如果您还想恢复它...使用 phone filter

【讨论】:

    【解决方案3】:

    试试这个:

    formatLocal('US', phoneNumber)

    【讨论】:

      【解决方案4】:

      我不确定您是否需要 Angular 或任何特殊库中的任何特殊内容。 . .只需使用基本的 JS .replace() 方法和一点正则表达式:

      var sPhoneNum = "(99) 9999-9999";
      var sFormattedPhoneNum = sPhoneNum.replace(/\D/g, "");
      // sFormattedPhoneNum equals "9999999999"
      

      正则表达式/\D/g 匹配所有非数字字符,因此它将去除除数字之外的所有字符。

      【讨论】:

      • 我猜角度的方式只是把它放在一个过滤器中:) 但我同意这将是最好和最简单的方法......不需要开始包含外部文件只是为了剥离所有没有数字...这是正确的答案,只需将其放入自定义过滤器中并吹出...它的棱角分明:)
      • 是的,好点。 . .你实际上必须将它插入你的角度代码才能工作。 :) 但是,是的,这是非常简单的格式化逻辑。 . .当然不需要任何重型工具来完成它。
      • yup :) 这就是我投票赞成答案的原因 :) 如果他想要一个过滤器,我只是在下面添加了过滤器答案......
      猜你喜欢
      • 2012-09-23
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2011-08-31
      相关资源
      最近更新 更多