[英]validate multiple date fields
我正在创建一个表单,我有一个日期选择器和一个时间选择器作为开始日期和结束日期。 因此,我总共有4个字段。 我希望能够验证startdate(startDate和startTime的组合)是否早于enddate。 但是我似乎无法弄清楚应该在哪里以及如何进行此验证。
因此,无论何时编辑其中一个字段,都应触发验证。
我似乎无法弄清楚在何处以及如何创建此验证,我试图创建一个名为method-validation的自定义验证,该验证可以从控制器中检索一个方法,然后确定验证是否正确,但是我可以t仅将其放在一个字段上,因为如果我更改另一个字段,则不会触发验证。
如何使它工作?
最重要的是,我希望能够将2个和2个字段设置在一起,并进行比较,如果end小于start则显示一条消息。
跟进:
问题不是比较两个日期。 我可以实现的。
<input type="text" ng-model="activity.startDate" date-picker>
<input type="text" ng-model="activity.startTime" time-picker>
<input type="text" ng-model="activity.endDate" date-picker>
<input type="text" ng-model="activity.endTime" time-picker>
确保这两个字段的组合未关闭
module.directive('validDate', function(){
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
function validator(value){
var valid = true;
if (value != undefined) {
value = moment(value, 'YYYY-MM-DD').format('YYYY-MM-DD');
if (((attrs.validDate == 'start') && (value >= scope.$eval(attrs.otherDate))) || ((attrs.validDate == 'end') && ((value < scope.$eval(attrs.otherDate))))) {
valid = false;
}
} else {
valid = false;
}
ctrl.$setValidity('date-valid', valid);
return value;
}
scope.$watch([attrs.otherDate, attrs.ngModel] ,function(newValue) {
validator(scope.$eval(attrs.ngModel));
}, true);
}
};
});
用法:
<input type="date" ng-model="startDate" valid-date="start" other-date="endDate" />
<input type="date" ng-model="endDate" valid-date="end" other-date="startDate" />
让我知道它是否有效。 我在这里使用MomentJS库进行格式化,但可以随时对其进行更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.