2009-11-27 78 views
0

我创建了3个包含日,月和年的选择框。我真正想要的是在用户选择日期之后检查,如果日期超过了显示消息的当前日期的一年以上。日期选择框的Javascript验证

林有点难倒在做什么。任何指导都会很棒。

感谢

+0

我会先建议你用代码示例等来解释你的问题。 – Alfred 2009-11-27 12:03:10

回答

1
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。

+0

他问未来一年,而不是过去;) – 2009-11-27 12:06:00

+0

我们得到的唯一指示是“如果日期距离当前日期还有一年多的时间“,我想我们可以在任何方向上解释......?但很好;我编辑我的帖子,以容纳这两个 – 2009-11-27 12:37:34

0

有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 
} 
+0

为什么投票? – 2009-11-27 20:04:53

0

不要重新发明轮子一次。使用library that does validation

+0

现有的库通常是最好的选择,但如果OP尚未使用jQuery,则这太多了​​。此外,一个基本的数学算法并不需要库/插件 – 2009-11-27 12:10:31

+0

@justin我想他也应该做事件绑定?此外,我认为大多数用户已经有谷歌CDN的JQuery的缓存版本。 – Alfred 2009-11-27 12:26:03

+0

验证是一件你在每个表单上,每个网站上反复做的事情......好的。做你自己的验证功能。不要在脚本中考虑体系结构。 – 2009-11-27 12:49:57