【发布时间】:2016-03-01 23:06:36
【问题描述】:
如果选择了不正确的日期和/或时间,下面的代码假定会显示一个警告框。
我遇到的问题是,如果我选择 25/11/2015 并选择 11:00,它会显示“请更改日期或时间”。如果我然后选择 25/11/2015 并选择 21:00,它会显示“很好”。
函数忽略日期,只检查时间。
如果用户选择了已经过去的时间或今天之前的日期,它应该显示一条消息“请更改日期或时间”。
我希望我能在这个问题上得到帮助。提前致谢。
function myFunction() {
var today = new Date();
var select_text = document.getElementById("datepicker-leave").value;
var select_date = new Date(select_text);
var select_time = document.getElementById("leavedrop").value;
var curr_time = today.getHours() + 1;
if ((select_date.getTime() <= today.getTime()) && select_time < curr_time) {
alert("Please change Date or Time")
} else {
alert("That's Fine")
}
}
<script>
$(function() { //datepickers
$( "#datepicker-leave).datepicker({
dateFormat: 'd-M-yy'});
});
</script>
<input type="text" id="datepicker-leave">
<select id="leavedrop">
<option value="0">00:00</option>
<option value="1">01:00</option>
<option value="2">02:00</option>
<option value="3">03:00</option>
<option value="4">04:00</option>
<option value="5">05:00</option>
<option value="6">06:00</option>
<option value="7">07:00</option>
<option value="8">08:00</option>
<option value="9">09:00</option>
<option value="10">10:00</option>
<option value="11">11:00</option>
<option value="12">12:00</option>
<option value="13">13:00</option>
<option value="14">14:00</option>
<option value="15">15:00</option>
<option value="16">16:00</option>
<option value="17">17:00</option>
<option value="18">18:00</option>
<option value="19">19:00</option>
<option value="20">20:00</option>
<option value="21">21:00</option>
<option value="22">22:00</option>
<option value="24">23:00</option>
</select>
<input type="button" value="Submit" onClick="myFunction()" />
【问题讨论】:
-
考虑使用 moment.js 进行所有日期操作和验证。
-
为什么要比较 dates.getTime()?您没有在 select_date 中设置时间。也是一个指针,对于 23:00,值为 24。此外,element.value 返回字符串。不确定这是否会导致问题,但您应该检查它们。
标签: javascript html date time datepicker