【发布时间】:2017-06-16 09:31:18
【问题描述】:
我需要测试输入的正确日期格式。我想接受几种日期格式,所以我创建了一个验证函数来测试至少一种格式是否正常,在这种情况下返回 true。 我使用 moment.js 来测试日期。 当我简单地使用硬编码字符串日期格式键入条件时,该函数可以正常工作:
var multiDateValidator = function (value)
{
if ((moment(value, 'DD/MM/YYYY', true).isValid()) ||
(moment(value, 'D/M/YYYY', true).isValid()) ||
(moment(value, 'DD.MM.YYYY', true).isValid()) ||
(moment(value, 'D.M.YYYY', true).isValid()) ||
(moment(value, 'DD. MM. YYYY', true).isValid()) ||
(moment(value, 'D. M. YYYY', true).isValid())) {
return true;
}
return false;
};
但如果我想使用允许的日期格式列表,它不起作用,它永远不会返回 true。
var allowedDateFormats = ['DD/MM/YYYY', 'D/M/YYYY', 'DD.MM.YYYY', 'D.M.YYYY', 'DD. MM. YYYY', 'D. M. YYYY'];
var multiDateValidator = function (value)
{
allowedDateFormats.forEach(function(dateFormat)
{
if (moment(value, dateFormat, true).isValid()) {
return true;
}
});
return false;
};
第二个函数有什么问题?我知道我不太擅长 JavaScript,但它应该可以工作,不是吗?
【问题讨论】:
-
范围。代码中有 2 个函数。
return true在第二个里面,return false在第一个里面。如果你在return true上面加上console.log("some text");,你就会明白我的意思了。 -
你说得对,我不能使用 .forEach(),我必须使用 for...of。您可以发表您的评论作为我可以确认的答案吗?谢谢
-
我已经发布了我的评论作为一个非常懒惰的解决方案的答案,仍然有效
-
**已编辑的答案,目前使用
标签: javascript momentjs