检查日期是否在过去,无需提交表格

Check if date is in the past without submitting form

本文关键字:提交 表格 过去 日期 是否 检查      更新时间:2023-09-26

我有这个代码,我想检查日期是否是过去的。我想在输入日期后立即检查它,在提交表单之前。

<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),它不会显示警报。

需要做的就是使用 Date 构造函数将<input>生成的字符串转换为 Date 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" >

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>

对于那些使用 type="

date"(随 HTML5 引入)而不是 type="text" 的人,可以这样完成:

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

你的代码非常接近,试试这个:

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

简单的地雷函数工作...

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;
    }
}
您可以使用


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

在比较日期之前,应将其设置为 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"));