gpt4 book ai didi

javascript - 验证多个日期字段

转载 作者:行者123 更新时间:2023-11-28 07:49:28 25 4
gpt4 key购买 nike

我正在创建一个表单,我有一个用于开始日期和结束日期的日期选择器和时间选择器。所以我总共有 4 个字段。我希望能够验证开始日期(开始日期和开始时间的组合)是否早于结束日期。但我似乎无法弄清楚应该在哪里以及如何进行此验证。

因此,每当编辑其中一个字段时,它都应该触发验证。

我似乎无法弄清楚在哪里以及如何创建此验证,我尝试创建一个名为 method-validation 的自定义验证,它可以从 Controller 检索方法,然后决定验证是否正确,但是我不能仅将其放在一个字段上,因为如果我更改其他字段,验证将不会被触发。

如何让它发挥作用?

底线是,我希望能够将 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 library此处可设置格式,但请随意更改。

关于javascript - 验证多个日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27014155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com