仅以角度 js 为单位的输入进行编号



仅数字输入:

HTML
    <input type="text" ng-model="employee.age" valid-input  
           input-pattern="[^0-9]+" placeholder="Enter an age" />
    </label> 
var app = angular.module('myApp', []);
app.controller('MainCtrl', function($scope) {
});
app.directive('validInput', function() {
  return {
    require: '?ngModel',
    scope: {
      "inputPattern": '@'
    },
    link: function(scope, element, attrs, ngModelCtrl) {
      var regexp = null;
      if (scope.inputPattern !== undefined) {
        regexp = new RegExp(scope.inputPattern, "g");
      }
      if(!ngModelCtrl) {
        return;
      }
      ngModelCtrl.$parsers.push(function(val) {
        if (regexp) {
          var clean = val.replace(regexp, '');
          if (val !== clean) {
            ngModelCtrl.$setViewValue(clean);
            ngModelCtrl.$render();
          }
          return clean;
        }
        else {
          return val;
        }
      });
      element.bind('keypress', function(event) {
        if(event.keyCode === 32) {
          event.preventDefault();
        }
      });
    }
}});

为什么上面的 angularjs 代码如此复杂?要有一个只有数字的文本输入,可以使用正则表达式使用普通的javascript来完成。

我想知道为什么这么长的angularjs代码如此有名?

难道不能比这更简单吗?

尝试以下方法,希望它有效,包括修剪空格,

  <input type="text" ng-model="employee.age" 
   ng-pattern="^d+$/|/[^s*]/" placeholder="Enter an age" />

最新更新