HTML上一个日期验证

时间:2015-11-13 16:43:07

标签: javascript html

我的代码出了问题。 我想要它,所以如果用户要选择昨天或任何以前的日期,它应该给出一个警告框告诉用户#Please输入一个vlid日期'

当我选择昨天的日期时,它会给我一条警告信息。 当我选择今天的日期时,它会给我一个警告信息。 当我选择明天约会时,它会给我一个警告信息。

为什么当我选择今天的消息时,它会给我一条提示信息?

<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>

5 个答案:

答案 0 :(得分:2)

这是因为日期输入仅设置日期本身,并将小时,分钟和秒留为00:00:00。因此,new Date()的输出(包括此附加数据)将始终大于当天输入日期的输出。

为了解决这个问题,您可以使用不同的值来反映今天的时间,就像日期输入中的值只包含年,月,日和时区偏移。

如下:

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

现在,在if语句中使用“todayForComparison”而不是原始的“today”变量。

答案 1 :(得分:1)

new Date(document.getElementById("mydate").value)返回的日期值的时间为00:00。这就是为什么当你选择今天的日期时,你就能看到警报。

答案 2 :(得分:1)

您正在将一个空时间(00:00)的日期与一个完整的dateTime(xx:xx)进行比较。 您应该在比较日期之前删除dateTime。

答案 3 :(得分:0)

DEMO
首先将用户值转换为日期格式并使用getTime函数()来比较有很多方法比这更好,最好你可以使用moment.js

 var userDate = new Date(document.getElementById("mydate").value);
    var today = new Date();
    if (today.getTime()>userDate.getTime()) {
        alert("invalid date");
    }

答案 4 :(得分:0)

这里是the fiddle,我从js添加了一个事件监听器:

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

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