jquery验证日期字段必须是未来

时间:2014-02-02 23:58:57

标签: jquery

我有一个方法

$.validator.addMethod("dateDDMMYYYY",
    function(value, element) {
        return value.match(/^(0?[1-9]|[12][0-9]|3[0-2])[.,/ -](0?[1-9]|1[0-2])[.,/ -](19|20)?\d{2}$/);
    },
    "* Please enter a valid date (dd/mm/yyyy)"
);

检查输入的日期是否是有效的dd / mm / yyyy日期,但我想修改(或创建一个新方法)以检查输入的日期是否在将来,并检查将来会有多远。

例如,如果输入的日期在将来少于2天,我希望显示一条消息,但如果日期大于2天,则不显示消息。

提前致谢

2 个答案:

答案 0 :(得分:0)

两天的持续时间(以毫秒为单位):

var twoDays = 2 * 24 * 60 * 60 * 1000

所以你可以在未来两天创建一个日期:

var now = new Date()
var future = new Date(now.getTime() + twoDays)

Javascript也有一个Date构造函数,如下所示:

new Date(year, month [, day, hour, minute, second, millisecond]);

所以只需使用正则表达式提取输入的日期(我会让你这样做)

var year = ...
var month = ...
var day = ...

var entered = new Date(year, month, day)

然后你的测试是:

entered - now > twoDays

如果该表达式为真,则他们将来输入的日期超过两天。

答案 1 :(得分:0)

一旦你确定它是一个有效的日期,你可以解析它并将其与当前日期进行比较:

// Assuming value is the date string.
var date = new Date(value);

// Create a new date, stripping the time away.
var today = new Date(new Date().toDateString());

// Subtracting one date from another gives you the number
//  of milliseconds between the two. Divide that down to days.
var daysInTheFuture = (date - today) / 1000 / 60 / 60 / 24;