【发布时间】:2013-05-22 18:18:02
【问题描述】:
我有一个文本框,假设用户输入格式为 mm/dd/yyyy 的日期。我试图确保是这种情况,并且它们不会传入字符串。由于我在下面的代码中使用 new Date() 我可以理解 startDate/endDate 是日期,即使它们是无效的......所以基本上我正在寻找进行此验证的正确方法
function calculate() {
var start = document.getElementById("start").value;
var end = document.getElementById("end").value;
var startDate = new Date(Date.parse(start));
var endDate = new Date(Date.parse(end));
var daysBetween = parseInt((endDate - startDate)/(24*3600*1000));
var er = document.getElementById("errorResult");
if(!(startDate instanceof Date) || !(endDate instanceof Date)) {
er.innerHTML = "Dates must be of the form mm/dd/yyyy";
return;
} else if (endDate<startDate) {
er.innerHTML = "End date must be after start date!";
return;
} else {
er.innerHTML = "";
}
【问题讨论】:
-
这并不能直接回答您的问题,但如果您有选项,我建议您在进行大量日期操作/格式化/验证时使用 moment.js:momentjs.com/docs/#/parsing/is-valid
-
坚持使用两位数的日期和月份很烦人,您应该接受 2013 年 4 月 5 日和 2013 年 4 月 5 日。
-
我同意我正在计划这个,但只是问了一个一般性的问题来让我开始
标签: javascript validation types