删除输入中输入的符号

时间:2016-05-13 21:58:48

标签: javascript angularjs

我需要阻止在输入字段中输入的某些符号出现。当用户在输入中键入内容时,我需要检查它是否符合某个标准,如果确实如此 - 符号应该出现在输入中(像往常一样),但如果没有 - 则不会发生任何事情。

在输入中出现输入符号之前,我能捕捉到一些事件吗?

Plunker

<body ng-app="changeExample">
  <script>
    angular.module('changeExample', [])
      .controller('ExampleController', ['$scope', function($scope) {
        $scope.var = 'a';
      }])

      .directive('changeValue', function() {
        return {
          require: 'ngModel',
          link: function(scope, elem, attrs, ctrl) {
            elem.on('input', function() {
              if(ctrl.$viewValue !== 'a') {
                scope.var = '';
              }
            });

            ctrl.$formatters.push(function(value) {
              return value === 'a' ? value : '';
            });
          }
        }
      });
  </script>
  <div ng-controller="ExampleController">
    <input type="text" ng-model="confirmed" change-value ng-change="change()"/>
  </div>
</body>

1 个答案:

答案 0 :(得分:1)

您可以使用ngChange指令识别并删除不需要的字符。

在下面的示例中,输入字段不接受$符号。

&#13;
&#13;
angular.module('changeExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    
    var FORBIDDEN_SYMBOL = '$';
      
    $scope.change = function () {

      var newChar = $scope.confirmed.slice(-1);

      if (newChar === FORBIDDEN_SYMBOL) {
      
        var inputSize = $scope.confirmed.length;
        $scope.confirmed = $scope.confirmed.substring(0, inputSize -1);
      }
    }
  }]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="changeExample" ng-controller="ExampleController">
  <input type="text" ng-model="confirmed" ng-change="change()" />
</div>
&#13;
&#13;
&#13;