我有两个字段hiring_date
和expiry_date
我正在使用角度UI datepicker。
如果招聘日期大于到期日期
这是我的代码:
逻辑是可以的,但我如何设置它以形成错误false
<small ng-show="formStep1.expiry_date.$invalid &&
formStep1.expiry_date.$touched " class="errorMsg ">
Please enter valid date (YYYY-MM-DD).</small>
<small
ng-show="formStep1.expiry_date.$modelValue < formStep1.hiring_date.$modelValue"
class="errorMsg ">
Expiry Date should not be a older than Target Hiring Date.</small>
基于两个输入日期,我得到了真实和错误
formStep1.expiry_date.$modelValue < formStep1.hiring_date.$modelValue
是否可以从视图侧进行验证..?
消息显示正常但我希望字段expiry_date
应该是必需的。
我尝试了类似的东西但没有工作:
<input datepicker-options="dateOptions"
type="text"
class="form-control"
ng-model="expiry_date"
is-open="config2.opened"
uib-datepicker-popup="yyyy-MM-dd"
close-text="Close"
name="expiry_date"
show-button-bar="false"
ng-required="formStep1.expiry_date.$modelValue < formStep1.hiring_date.$modelValue ? 'true': 'false'" />
答案 0 :(得分:1)
我建议使用momentJs进行任何类型的日期操作。汤姆斯科特可以解释你为什么here。无论如何,对于您的特定情况,有一个moment-angular库可以这样使用:
/* controller declaration */.('$scope', 'moment', function($scope, moment) {
$scope.isDateBefore = function(firstDate, secondDate) {
return moment(firstDate).isBefore(secondeDate);
}
})
<small
ng-show="isDateBefore(formStep1.expiry_date.$modelValue, formStep1.hiring_date.$modelValue)"
class="errorMsg ">
您可以详细了解isBefore
函数on the official momentjs doc
答案 1 :(得分:0)
<span ng-if="formStep1.expiry_date.$modelValue < formStep1.hiring_date.$modelValue ? invalidExp(): ''" ></span>
$scope.invalidExp = function () {
$scope.formStep1.expiry_date.$valid = false;
}
这个有用了。那么这个更好的解决方案......?