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