2017-06-16 48 views
0

输入类型工作AngularJS - ngmaxlength不NG-需要

<div class="form-group" ng-class="{ 'has-error': loginForm.password.$dirty && loginForm.password.$error.required }"> 
    <label for="password">{{ 'PASSWORD' | translate }} <span class="required-field"> *</span></label> 
    <input uib-tooltip="{{ 'PLEASE_ENTER_PASSWORD' | translate }}" tooltip-placement="right" data-trigger="hover" type="password" 
    name="password" id="password" class="color-tooltip form-control" ng-model="password" ng-maxlength="5" required /> 
    <span ng-show="loginForm.password.$dirty && loginForm.password.$error.required" class="help-block">{{ 'PASSWORDISREQUIRED' | translate }}</span> 
    <span ng-if="!loginForm.password.$valid" class="help-block">The maximum length for password is 5 characters</span> 
</div> 

ng-maxlength正在用requiredng-required使用,它显示的字符错误消息时没有输入键入甚至限制。相反,只有当输入字符长度超过时才会显示错误信息。

回答

0

条件更改为!loginForm.password.$valid && loginForm.password.$error.maxlength

<div class="form-group" ng-class="{ 'has-error': loginForm.password.$dirty && loginForm.password.$error.required }"> 
    <label for="password">{{ 'PASSWORD' | translate }} <span class="required-field"> *</span></label> 
    <input uib-tooltip="{{ 'PLEASE_ENTER_PASSWORD' | translate }}" tooltip-placement="right" data-trigger="hover" type="password" name="password" id="password" class="color-tooltip form-control" ng-model="password" ng-maxlength="5" required /> 
    <span ng-show="loginForm.password.$dirty && loginForm.password.$error.required" class="help-block">{{ 'PASSWORDISREQUIRED' | translate }}</span> 
    <span ng-if="!loginForm.password.$valid && loginForm.password.$error.maxlength" class="help-block">The maximum length for password is 5 characters</span> 
</div> 

否则它会显示,如果现场有任何错误,由它(空必填字段)。

例:

var app = angular.module("my-app", []); 
 
app.controller("my-controller", ["$scope", function($scope) { 
 
    $scope.loginForm = null; 
 
    $scope.password = ""; 
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="my-app" ng-controller="my-controller" ng-form="loginForm"> 
 
    <div class="form-group" ng-class="{ 'has-error': loginForm.password.$dirty && loginForm.password.$error.required }"> 
 
    <label for="password">Password <span class="required-field"> *</span></label> 
 
    <input data-trigger="hover" type="password" name="password" id="password" class="color-tooltip form-control" ng-model="password" ng-maxlength="5" required /> 
 
    <span ng-show="loginForm.password.$dirty && loginForm.password.$error.required" class="help-block">Password is required</span> 
 
    <span ng-if="!loginForm.password.$valid && loginForm.password.$error.maxlength" class="help-block">The maximum length for password is 5 characters</span> 
 
    </div> 
 
</div>

+0

你能解释为什么'条件loginForm.password $ error.maxlength'工作? – Slimshadddyyy

+0

@Slimshadddyyy我以为我做到了。如果该字段有任何错误,'!loginForm.password。$ valid'将为'true',所以文本将显示是否不符合'required'。现在我们添加了另一个检查来查看'maxlength'具体是否是错误。 – Arg0n