我创建了3个包含日,月和年的选择框。我真正想要的是在用户选择日期之后检查,如果日期超过了显示消息的当前日期的一年以上。日期选择框的Javascript验证
林有点难倒在做什么。任何指导都会很棒。
感谢
我创建了3个包含日,月和年的选择框。我真正想要的是在用户选择日期之后检查,如果日期超过了显示消息的当前日期的一年以上。日期选择框的Javascript验证
林有点难倒在做什么。任何指导都会很棒。
感谢
var ddlYear = document.getElementById('ddlYear');
var ddlMonth = document.getElementById('ddlMonth');
var ddlDay = document.getElementById('ddlDay');
var y = ddlYear[ddlYear.selectedIndex];
var m = ddlMonth[ddlMonth.selectedIndex];
var d = ddlDay[ddlDay.selectedIndex];
// past
var dt = new Date((y+1), (m-1), d);
var moreThanOnYearAgo = dt < new Date();
// future
var dt2 = new Date((y-1), (m-1), d);
var moreThanOnYearAhead = dt2 > new Date();
的y+1
是因为如果我们正在增加一年,但仍低于new Date()
(今天),那么它一年多以前。
的m-1
是因为在Date
构造月份是一个枚举,这意味着一月份是0。
他问未来一年,而不是过去;) – 2009-11-27 12:06:00
我们得到的唯一指示是“如果日期距离当前日期还有一年多的时间“,我想我们可以在任何方向上解释......?但很好;我编辑我的帖子,以容纳这两个 – 2009-11-27 12:37:34
有31556926000毫秒一年。只需将该日期转换为时间戳并从中扣除当前日期即可。如果结果大于31556926000,则需要一年多的时间。
var userDate = new Date("11/29/2010");
var now = new Date();
var year_ms = 31556926000;
if (userDate.getTime() - now.getTime() >= year_ms) {
// A year away
} else {
// less than a year away
}
为什么投票? – 2009-11-27 20:04:53
不要重新发明轮子一次。使用library that does validation。
现有的库通常是最好的选择,但如果OP尚未使用jQuery,则这太多了。此外,一个基本的数学算法并不需要库/插件 – 2009-11-27 12:10:31
@justin我想他也应该做事件绑定?此外,我认为大多数用户已经有谷歌CDN的JQuery的缓存版本。 – Alfred 2009-11-27 12:26:03
验证是一件你在每个表单上,每个网站上反复做的事情......好的。做你自己的验证功能。不要在脚本中考虑体系结构。 – 2009-11-27 12:49:57
我会先建议你用代码示例等来解释你的问题。 – Alfred 2009-11-27 12:03:10