Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML上一日期验证_Javascript_Html - Fatal编程技术网

Javascript HTML上一日期验证

Javascript HTML上一日期验证,javascript,html,Javascript,Html,我的代码有问题。 我希望这样,如果用户选择昨天或之前的任何日期,它应该给出一个警告框,告诉用户请输入vlid日期 当我选择yesterdays date时,它会给我一条警告消息。 当我选择todays date时,它会给我一条警告消息。 当我选择“明天日期”时,它会给我一条警告消息 为什么当我选择今天的消息时,它会给我一条警告消息 <input type='date' onchange="validateDate()" id='mydate'></input> <

我的代码有问题。 我希望这样,如果用户选择昨天或之前的任何日期,它应该给出一个警告框,告诉用户请输入vlid日期

当我选择yesterdays date时,它会给我一条警告消息。 当我选择todays date时,它会给我一条警告消息。 当我选择“明天日期”时,它会给我一条警告消息

为什么当我选择今天的消息时,它会给我一条警告消息

<input type='date' onchange="validateDate()" id='mydate'></input>

<script>

    function validateDate() {
    var userdate = new Date(document.getElementById("mydate").value);
    var today = new Date();

       if(userdate < today){

            alert('Your message');
       }
}
</script>
首先,将用户值转换为日期格式,并使用getTime函数比较有许多方法比这个更好,最好使用矩.js

 var userDate = new Date(document.getElementById("mydate").value);
    var today = new Date();
    if (today.getTime()>userDate.getTime()) {
        alert("invalid date");
    }
下面是我从js添加的事件侦听器:

var el = document.getElementById("mydate");
el.onchange = onChangeDate;

function onChangeDate(e){
    if(new Date(el.value) < new Date()){
        alert("invalid date");
    }
}

new Datedocument.getElementByIdmydate.value返回的日期值的时间为00:00。这就是为什么当您选择今天的日期时,您可以看到警报。

这是因为日期输入仅设置日期本身,并将小时、分钟和秒保留为00:00:00。因此,包含此附加数据的新日期输出将始终大于当前日期输入的输出

为了克服这个问题,您可以使用不同的值来反映今天的时间,这与日期输入中的值一样,只包含年、月、日和时区偏移量

内容如下:

var today = new Date();
var todayForComparison = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, -today.getTimezoneOffset());

现在,在if语句中使用today进行比较,而不是原始的today变量。

您正在比较一个时间为空00:00的日期和一个完整的日期时间xx:xx。 在比较日期之前,应删除日期时间