0

我有这个指令

angular.module('tutors.components')
  .directive('formValidator', function() {
    return {
      restrict: 'A'      
      link: function (scope, element, attrs) {
        function nameValidator (input) {
          var regExp : "/^[a-zA-Z']*$/";
          var validator : regExp.test(input);
          return validator;
        }  
      };
    });

而这个html

    <input form-Validator
           type="text"
           required
           name="firstName"
           class="form-control"
           ng-maxlength="20"
           placeholder="First name"
           ng-model="user.firstName"
           ng-disabled="vm.isLoading"
           tooltip="{{requiredMsg}}"
           tooltip-placement="top"
           tooltip-trigger="focus"
           tooltip-enable="signupForm.firstName.$error.required && signupForm.firstName.$touched">

我想运行该指令,以便验证输入中输入的文本,我尝试使用像这样的 ng-pattern ng-pattern="/[a-zA-Z]+/" 但这不起作用(我仍然更喜欢使用它而不是指令)

4

1 回答 1

0

您的指令应该是小案例form-validator,以便编译器调用该指令。

此外,您需要将nameValidator功能代码更改为以下内容。

.directive('formValidator', function() {
  return {
    restrict: 'A',
    require: 'ngModel', //to get ngModelController
    link: function(scope, element, attrs, ngModel) {
      function nameValidator(input) {
          var regExp = "/^[a-zA-Z]$/";
          var validator = regExp.test(input);
          return validator;
      }
      ngModel.$validators.push(nameValidator); //should pushed to validators to validate
    }
  }
})

ORng-pattern应该没问题,只有它应该有^(start) & $(end)

ng-pattern="/^[a-zA-Z]*$/"

演示 Plunkr

于 2015-12-03T19:36:00.703 回答