【发布时间】:2017-02-09 06:49:23
【问题描述】:
我正在使用 Angular js 进行验证。对于日期验证,我使用moment.js 文件。我的问题是当我输入年份为“0000”的日期时,例如1-1-0000,它没有给出错误。我的指令代码如下-
app.directive("validDate", function () {
return {
require: "ngModel",
restrict: "A", // Attributes only
link: function (scope, elem, attr, ctrl) {
ctrl.$validators.cValidDate = function(value) {
if (value === undefined || value === null || value === "") {
return true;
}
return moment(value, ["D-M-YYYY"], true).isValid();
}
}
}
});
有人可以帮我验证吗?我在这里创建了一个 plunker- PLUNKER
我已经编辑了脚本, 但它现在仍然对小于 1-1-1970 的所有日期给出错误,因为它将日期 1-1-0001 视为 1-1-1970,因此它是根据它进行验证的, 同样,当日期中没有值时,日期显示为无效,除非我输入的日期大于 1-1-1970。 我想如果年份是 0000 日期不应该是有效的。有谁能够帮我?我已经用上面的代码更新了我的 plunker。
更新-
现在我能够解决日期问题,但我现在的问题是—— 如果日期为空仍然存在错误,当日期为空时我不希望出现此错误,我应该为此设置什么条件?请查看我更新的 plunker。
回答-
我可以做出回答,因为我添加了以下条件 -
if(moment(value, ["D-M-YYYY"], true).isValid()){
// condition
} else
return true;
在这里查看我的新 plunker-https://plnkr.co/edit/uKcynQktBCKRYoN7xdM1?p=preview
【问题讨论】:
-
0000是根据ISO 8601 的有效年份,根据您的特定需求,您可能需要在moment().isValid()调用之前添加额外的检查,检查年份并返回Invalid,如果它是@987654330 @.
标签: javascript angularjs validation momentjs