2016-11-28 104 views
0

我正在使用Angular JS ngMessage指令进行表单验证,我想聚合几个字段的ngMessage警报。基本上,我的表单包含3个输入(日,月,年),我希望在日期无效时显示警报(无论日期,月份或年份无效)。我怎样才能做到这一点?我有plunkered我的问题,这里是我如何使用ngMessage指令:如何聚合几个字段的ngMessage

<form name="messageAnimationForm"> 
    <label for="day">Day</label> 
    <input ng-model="day" id="day" name="day" ng-minlength="1" ng-maxlength="2" required class="ngMessageSample" ng-pattern="/^\d+$/"/> <br/><br/> 
    <label for="month">Month</label> 
    <input ng-model="month" id="month" name="month" ng-minlength="1" ng-maxlength="2" required class="ngMessageSample" ng-pattern="/^\d+$/"/><br/><br/> 
    <label for="year">Year</label> 
    <input ng-model="year" id="year" name="year" ng-minlength="4" ng-maxlength="4" required class="ngMessageSample" ng-pattern="/^\d+$/"/><br/><br/> 

    <div> 
    <div ng-messages="messageAnimationForm.day.$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="pattern" class="ngMessageClass">* This field is invalid, only numbers are allowed</div> 
     <div ng-message="required" class="ngMessageClass">* Day is mandatory</div> 
    </div> 

    <div ng-messages="messageAnimationForm.month.$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="pattern" class="ngMessageClass">* This field is invalid, only numbers are allowed</div> 
     <div ng-message="required" class="ngMessageClass">* Month is mandatory</div> 
    </div> 

    <div ng-messages="messageAnimationForm.year.$error" class="ngMessagesClass" ng-messages-multiple> 
     <div ng-message="pattern" class="ngMessageClass">* This field is invalid, only numbers are allowed</div> 
     <div ng-message="required" class="ngMessageClass">* Year is mandatory</div> 
    </div> 
    </div> 
</form> 

回答

1

可以检查你的整个形式与messageAnimationForm.$error错误:

<div ng-messages="messageAnimationForm.$error" class="ngMessagesClass" ng-messages-multiple> 
    <div ng-message="pattern" class="ngMessageClass">* A field is invalid, only numbers are allowed</div> 
    <div ng-message="minlength" class="ngMessageClass">* It's mandatory at least 1 characters</div> 
    <div ng-message="maxlength" class="ngMessageClass">* It's mandatory at most 2 characters</div> 
</div> 

Forked your Plunker here.

0

尝试添加自定义验证器添加到三个字段中的一个字段并从您的控制器手动触发(或者将手表添加到三个日期组件以激活验证功能):

<form name="messageAnimationForm"> 
<div ng-messages="messageAnimationForm.year.$error" class="ngMessagesClass" ng-messages-multiple> 
    <div ng-message="invalidDate" class="ngMessageClass">Date not valid</div> 
</div> 
</form> 

然后,在您的控制器中,您必须使用自定义规则检查日期的有效性。如果要显示消息,则必须将自定义错误设置为true(或“false”以将其隐藏):

$scope.messageAnimationForm.year.$error.invalidDate = checkIfYourDateIsValid(); 
相关问题