如何按时间禁用HTML input date类型的当前日期?
实现Input Date控件当日12点后禁用当前日期
我明白你要实现的需求:在当日12:00:00之后,禁止用户选择当前日期。你现有的代码只处理了日期维度的限制,没加入时间判断逻辑,这就导致不管几点都只能选当天及之前的日期。下面是调整后的代码:
$(function() { var dtToday = new Date(); // 获取当前小时数,用来判断是否过了12点 var currentHour = dtToday.getHours(); // 初始化日期相关变量 var month = dtToday.getMonth() + 1; var day = dtToday.getDate(); var year = dtToday.getFullYear(); // 如果当前时间已经过了12点,把日期往前推一天 if (currentHour >= 12) { dtToday.setDate(dtToday.getDate() - 1); // 更新推后的日期对应的月、日、年 month = dtToday.getMonth() + 1; day = dtToday.getDate(); year = dtToday.getFullYear(); } // 格式化月份和日期为两位数字(符合input date的格式要求) if (month < 10) month = '0' + month.toString(); if (day < 10) day = '0' + day.toString(); var maxDate = year + '-' + month + '-' + day; // 将限制日期赋值给你的date输入控件 $('input[type="date"]').attr('max', maxDate); });
关键逻辑说明:
- 通过
getHours()获取当前小时,判断是否已经过了12点 - 若过了12点,就把当前日期对象的日期减1,这样最终的
maxDate会是前一天,从而禁用当前日期的选择 - 保持了你原来的日期格式化逻辑,确保生成的日期符合
YYYY-MM-DD的标准格式,能被input date控件识别
内容的提问来源于stack exchange,提问作者Ramesh S




