Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 仅限于以角度写入a-z_Angularjs - Fatal编程技术网

Angularjs 仅限于以角度写入a-z

Angularjs 仅限于以角度写入a-z,angularjs,Angularjs,我想让用户只写英文字符,而不是数字或任何语言。 这是我的小提琴,但它坏了 app.directive('validcharEn', function () { return { require: '?ngModel', link: function (scope, element, attrs, ngModelCtrl) { if (!ngModelCtrl) { return;

我想让用户只写英文字符,而不是数字或任何语言。 这是我的小提琴,但它坏了

app.directive('validcharEn', function () {
    return {
        require: '?ngModel',
        link: function (scope, element, attrs, ngModelCtrl) {
            if (!ngModelCtrl) {
                return;
            }

            ngModelCtrl.$parsers.push(function (val) {
                if (angular.isUndefined(val)) {
                    var val = '';
                }
                var clean = val.replace(/[^a-z]/g, '');
                var decimalCheck = clean.split('.');
                if (!angular.isUndefined(decimalCheck[1])) {
                    decimalCheck[1] = decimalCheck[1].slice(0, 2);
                    clean = decimalCheck[0] + '.' + decimalCheck[1];
                }

                if (val !== clean) {
                    ngModelCtrl.$setViewValue(clean);
                    ngModelCtrl.$render();
                }
                return clean;
            });

            element.bind('keypress', function (event) {
                if (event.keyCode === 10) {
                    event.preventDefault();
                }
            });
        }
    };
});  
我遗漏了什么吗?

您可以使用指令:

<input type="text" ng-pattern-restrict="^[a-z]*$" />
这里有一个例子:

这个怎么样:,干净而简单的方法

app.directive('validEn', function() {
  return {
    require: '?ngModel',
    link: function(scope, element, attrs, ngModelCtrl) {
      if(!ngModelCtrl) {
        return; 
      }

      ngModelCtrl.$parsers.push(function(val) {
        var clean = val.replace( /[^a-z]+/g, '');
        if (val !== clean) {
          ngModelCtrl.$setViewValue(clean);
          ngModelCtrl.$render();
        }
        return clean;
      });

      element.bind('keypress', function(event) {
        if(event.keyCode === 32) {
          event.preventDefault();
        }
      });
    }
  };
});
HTML


希望此帮助

@Soheil更新了答案。@Soheil抱歉,修复了链接。非常感谢,我已经看过了,但不是有太多代码用于此目的吗?@Soheil它似乎经过测试,而且灵活。您可以选择继续使用自己的实现,但我认为这不是一段复杂的代码。
<input type="text" ng-model="employee.age" valid-en />
var clean = val.replace( /[^0-9+.+a-z+@]+/g, '');