在没有提交表格的情况下检查日期是否过去

时间:2014-12-31 00:15:17

标签: javascript jquery validation date

我有这个代码,我想检查过去的日期。我希望在表单提交之前立即检查它。

<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="text" data-date-format="yyyy-mm-dd" >

<script type="text/javascript">
 function checkDate() {
   var selectedDate = document.getElementById('datepicker').value;
   var now = new Date();
   if (selectedDate < now) {
    alert("Date must be in the future");
   }
 }
</script>

这不起作用,如果我输入过去的日期(例如2014-12-03),则不会显示警告。

7 个答案:

答案 0 :(得分:14)

您需要做的就是使用日期构造函数<input>new Date("2014-06-12")生成的字符串转换为日期

 function checkDate() {
   var selectedText = document.getElementById('datepicker').value;
   var selectedDate = new Date(selectedText);
   var now = new Date();
   if (selectedDate < now) {
    alert("Date must be in the future");
   }
 }
<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="date" data-date-format="yyyy-mm-dd" >

答案 1 :(得分:1)

date()函数返回一个字符串。首先尝试使用Date.parse()函数将两个日期转换为整数:

<input id="datepicker" onchange="checkDate()" required class="datepicker-input" type="text" data-date-format="yyyy-mm-dd" >

<script type="text/javascript">
   function checkDate() {
       var selectedDate = document.getElementById('datepicker').value;
       var now = new Date();
       var dt1 = Date.parse(now),
       dt2 = Date.parse(selectedDate);
       if (dt2 < dt1) {
            alert("Date must be in the future");
       }
 }
</script>

答案 2 :(得分:0)

您的代码非常接近,请尝试使用此代码:

var selectedDate = $('#datepicker').datepicker('getDate');
var now = new Date();
if (selectedDate < now) {
  // selected date is in the past
}

答案 3 :(得分:0)

对于那些使用type =&#34; date&#34; (用HTML5引入)而不是type =&#34; text&#34;,它可以这样做:

 function checkDate() {
   var date = this.value;
   if(date.valueAsDate <= new Date()) {
       //Date in the past
   } else {
       //Date in the future
   }
}

答案 4 :(得分:0)

简单的防雷功能正常工作...

function check_not_past_date_time(enter_date) {
    var a =new Date(enter_date);
    var now =new Date();
    if(a>now){
        return true;
    }else {
        return false;
    }
}

答案 5 :(得分:0)

您可以使用


_isDate1LowerThanDate2(date1, date2) {
    return new Date(date1) < new Date(date2);
  }

答案 6 :(得分:0)

在比较日期之前,应将它们设置为 0 小时。这将确保它们之间的差异是 1 天的倍数。

const isPastDate = (date) => {
    const specificDate = new Date(date).setHours(0, 0, 0, 0);
    const today = new Date().setHours(0, 0, 0, 0);
    return specificDate < today;
}

console.log(isPastDate("2021-08-10T23:59:00"));