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="/[a-zA-Z]+/" のような ng-pattern を使用しようとしましたが、うまくいきませんでした (私はまだディレクティブよりもそれを使用することを好みます)

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
    }
  }
})

または(開始) と(終了)ng-patternのみが含まれている必要があります。^$

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

デモプランカー

于 2015-12-03T19:36:00.703 に答える