此代码仅允许未来事件。
我遇到的问题是它不允许提交今天的日期,但我需要允许它。我怎么能做到这一点?
这是我的代码:
if ( this.element.find( '#visitdate' ).length > 0 ) {
var dateParts = $( '#visitdate' ).val().split( '/' );
var check = new Date( dateParts[2], dateParts[1]-1, dateParts[0], 0, 0, 0, 0 ).getTime();
var today = Date.now();
if ( today > check ) {
_errMsg = "Please enter a future visit date";
return false;
} else {
return true;
}
}
答案 0 :(得分:1)
您需要做的就是使用天数作为日期的分辨率,而不是确切的时间。更改后,您的代码将如下所示:
if ( this.element.find( '#visitdate' ).length > 0 ) {
var dateParts = $( '#visitdate' ).val().split( '/' );
var check = new Date( dateParts[2], dateParts[1]-1, dateParts[0] ).getTime();
var today = new Date( Date.now().getFullYear(), Date.now().getMonth(), Date.now().getDate() ).getTime();
if ( today > check ) {
_errMsg = "Please enter a future visit date";
return false;
} else {
return true;
}
}
答案 1 :(得分:1)
我在示例代码中看到的一个问题是您正在使用Date.now(),其中包括小时,分钟,秒等。
你最好这样做:
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
然后你可以检查时间差异:
if (today.getTime() > check ) {
}
更新:示例代码
if (this.element.find('#visitdate').length > 0) {
var dateParts = $('#visitdate').val().split('/');
var check = new Date(dateParts[2], dateParts[1]-1, dateParts[0], 0,0,0,0);
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
if (today.getTime() > check.getTime() ) {
_errMsg = "Please enter a future visit date";
return false;
} else {
return true;
}
}