【发布时间】:2015-04-02 00:05:15
【问题描述】:
在我的角度页面中,我有一个表单:
<div class="row-fluid">
<div class="control-group" ng-class="{error:form.startDate.$invalid && form.startDate.$dirty && error:form.endDate.$invalid && form.endDate.$dirty}">
<div class="row-fluid">
<div class="span4">
<label><b>Start Date</b> (mm/dd/yyyy)</label>
<input type="date"
id="startDate"
name="startDate"
max="{{maxDate}}"
min="{{minDate}}"
ng-pattern="/^((\d{4})-(\d{2})-(\d{2})|(\d{2})\/(\d{2})\/(\d{4}))$/"
ng-model="startDate"
required />
</div>
<div class="span4">
<label><b>End Date</b> (mm/dd/yyyy)</label>
<input type="date"
id="endDate"
name="endDate"
max="{{maxDate}}"
min="{{minDate}}"
ng-pattern="/^((\d{4})-(\d{2})-(\d{2})|(\d{2})\/(\d{2})\/(\d{4}))$/"
ng-model="endDate"
required />
</div>
</div>
<div class="row-fluid">
<div class="span4">
<span ng-show="form.startDate.$dirty">
<span ng-show="form.startDate.$error.required" class="help-inline">Start Date is required</span>
<span ng-show="form.startDate.$error.pattern" class="help-inline">Invalid start date</span>
<span ng-show="form.startDate.$error.max" class="help-inline">Start Date exceeds maximum</span>
</span>
</div>
<div class="span4">
<span ng-show="form.endDate.$dirty">
<span ng-show="form.endDate.$error.required" class="help-inline">End Date is required</span>
<span ng-show="form.endDate.$error.pattern" class="help-inline">Invalid end date</span>
<span ng-show="form.endDate.$error.max" class="help-inline">End Date exceeds maximum</span>
</span>
</div>
</div>
<input type="button" value="Load Report" ng-click="getLeads()" class="btn btn-primary" />
</div>
</div>
字段按应有的方式工作,但验证没有。如果我在任一日期字段中输入“02/30/2015”,它会显示所需的消息而不是无效的消息。
所以,问题是:如何获得角度 $dirty 来验证正确的问题:字段不为空,因此“必需”无效。日期不正确,应该触发无效消息。
【问题讨论】:
-
旁注 - 我强烈建议在您的情况下使用角度引导日期选择器,而不是您自己的输入字段
-
这些是角度引导日期选择器。 “type=date”强制它使用 datepicker 方法。
标签: javascript angularjs validation