日期选择器不允许今天的日期作为接受

时间:2014-09-09 13:07:44

标签: 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, 0 ).getTime();
  var today = Date.now();
  if ( today > check ) {
    _errMsg = "Please enter a future visit date";
    return false;
  } else {
    return true;
  }
}

2 个答案:

答案 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;
  }
}
相关问题