【问题标题】:Angularjs : display messageAngularjs:显示消息
【发布时间】:2016-05-28 22:37:39
【问题描述】:

我尝试在密码不匹配但不显示任何想法时显示消息?我尝试在密码不匹配但不显示任何想法时显示消息?

指令:

angular.module('crud')
  .directive('equal', function () {
    return {
      require: 'ngModel',
      scope: {
        equal: '='
      },
      link: function(scope, elem, attrs, ctrl) {

        ctrl.$validators.equal = function(modelValue, viewValue) {
          return modelValue === scope.equal;
        };

        scope.$watch('equal', function(newVal, oldVal) {
          ctrl.$validate();
        });
      }
    };
  });

html

<form name="userForm"  ng-submit="signup()" class="form-horizontal" role="form" >
    <input type="password" class="form-control ng-invalid submitted" id="password" name="password" ng-model="password" ng-minlength="8" ng-maxlength="20"  required />

     <input type="password" equal="password" class="form-control  ng-invalid submitted" id="confirmPassword" name="confirmPassword" ng-model="confirmPassword" required  />

    <span  ng-show="userForm.password.$error.equal && userForm.password.$dirty">Passwords don't match.</span>
</form>

【问题讨论】:

    标签: javascript angularjs angularjs-directive angularjs-scope compare


    【解决方案1】:

    除了一个例外,一切都很好,你应该在密码输入上添加 equal 指令,因为你正在显示密码错误,所以你应该验证密码。除此之外还可以。尽管您可能会考虑使用 ng-messages 来显示错误。

    angular.module('crud', ['ngMessages']);
    
    angular.module('crud')
      .directive('equal', function () {
        return {
          require: 'ngModel',
          scope: {
            equal: '='
          },
          link: function(scope, elem, attrs, ctrl) {
            ctrl.$validators.equal = function(modelValue, viewValue) {
              return modelValue === scope.equal;
            };
    
            scope.$watch('equal', function(newVal, oldVal) {
              ctrl.$validate();
            });
          }
        };
      });
    .valid {
      border: 1px solid green;
    }
    
    .invalid {
      border: 1px solid red;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
    <script src="https://code.angularjs.org/1.5.5/angular-messages.js"></script>
    <div ng-app="crud">
    <form name="userForm"  class="form-horizontal" role="form" >
        <input type="password" class="form-control ng-invalid submitted" id="password" name="password" equal="confirmPassword" ng-model="password" ng-minlength="8" ng-maxlength="20" ng-class="{'valid':  userForm.password.$valid || !userForm.password.$dirty, 'invalid': userForm.password.$invalid && userForm.password.$dirty}"  required />
    
         <input type="password"  class="form-control submitted" id="confirmPassword" name="confirmPassword" ng-model="confirmPassword" required  />
    
        <div ng-messages="userForm.password.$error" ng-show="userForm.password.$dirty" role="alert">
          <div ng-message="required">Please enter a value for this field.</div>
          <div ng-message="equal">Passwords don't match.</div>
        </div>
      
    </form>
    </div>

    【讨论】:

    • 你能放上 ng-messages 吗?
    • @nevergiveup 当然,我更新了上面的 sn-p 以便它使用 ng-messages
    • 当红色边框不正确且绿色边框正确时,如何放置?
    • 你能把你的演示放进去吗?
    • @nevergiveup 给你
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 2017-01-19
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多