angularjs:无法在数字类型的输入字段中显示特殊字符

Posted

技术标签:

【中文标题】angularjs:无法在数字类型的输入字段中显示特殊字符【英文标题】:angularjs: Unable to display special characters in input field of type number 【发布时间】:2014-04-08 19:13:18 【问题描述】:

我在格式化输入字段时遇到了 angularjs 的问题。这是背景

我们需要一个信用卡输入文本字段,它需要是 type="number" 以便移动设备可以显示数字键盘。在 blur 事件中,我们需要屏蔽除最后 4 位之外的所有数字。

即使 angular ng-model 接受模型中的特殊字符,该值也不会显示在输入字段中。

这是说明问题的示例代码。

<!DOCTYPE html>
<html ng-app>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
    <meta charset="utf-8"/>
  </head>
  <body>
    <div ng-controller="PaymentController">
      Card Number 1:<input type="number" ng-model="ccard1" /> ccard1 <br/>
      Card Number 2:<input type="number" ng-model="ccard2" /> ccard2 <br/>
      Card Number 3:<input type="number" ng-model="ccard3" /> ccard3    
    </div>
    <script>
      function PaymentController($scope)
        $scope.ccard1=1234;   
        $scope.ccard2='1234';     
        $scope.ccard3='####';             
      
    </script>
  </body>
</html>

这是jsbin demo

有人帮我解决这个问题吗?

【问题讨论】:

有什么问题 - 你将 type 设置为 number - 它只接受数字。 这不是 AngularJS 的问题。浏览器是阻止掩码的,因为输入类型是数字。 【参考方案1】:

这是一个可行的解决方案,可能不是正确的方法。

创建一个指令并删除该字段的解析器和格式化程序。一个警告是表单验证不起作用,您必须手动验证。

paymentApp.directive('rawinput', function()
    return 
        require: 'ngModel',
        priority: 100,
        link: function(scope, ele, attr, ngModel)
            ngModel.$parsers=[];
            ngModel.$formatters=[];
        
    ;
);

并像这样在需要的地方指定指令

<input type="number" ng-model="ccard3" rawinput/>

这是工作演示:http://jsbin.com/fated/2/edit

【讨论】:

以上是关于angularjs:无法在数字类型的输入字段中显示特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

使用 HTML 输入类型的数字键盘显示

如何使用 angularjs 比较输入字段中的两个数字?

在javascript的输入数字类型字段中输入值时如何显示输入文本字段?

为啥我在 AngularJS 中的日期输入字段会抛出类型错误?

如何在html中给出特定的输入类型?

如何对 AngularJS 中的两个字段求和并在标签中显示结果?