Javascript 日期选择器不允许今天';接受日期
此代码只允许将来发生事件 我遇到的问题是,它不允许提交今天的日期,但我需要它被允许。我怎样才能做到这一点 这是我的密码:Javascript 日期选择器不允许今天';接受日期,javascript,function,date,if-statement,Javascript,Function,Date,If Statement,此代码只允许将来发生事件 我遇到的问题是,它不允许提交今天的日期,但我需要它被允许。我怎样才能做到这一点 这是我的密码: 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,
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;
}
}
你所需要做的就是用天数来决定日期,而不是精确的时间。更改此选项后,您的代码将如下所示:
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;
}
}
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
我在示例代码中看到的一个问题是,您正在使用Date.now(),其中包括小时、分钟、秒等 你最好这样做:
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;
}
}
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;
}
}
@JPS您能解释一下这将如何影响此解决方案的有效性吗?如果我错了,请原谅,但是getTime是一个从1970年1月的日期到所选日期的以微秒为单位的时间。这意味着每一秒这个数字都会改变,所以它永远不会相等。这有意义吗@APerson@JPS我可以合理地确定,
getTime()
返回一个数字,可以与您从中获得的数字进行比较。是的,但它总是不同的,那么您如何比较每秒可能不同的数字呢@你能在我的代码样本中给我举个例子让我理解吗@edrian@JPS我在你的示例代码中加入了一个示例,呃,“今天”的午夜永远不会是未来的事件…