如何禁用DatePicker当前日期及未来31天,31天后允许选择?
解决方案
要实现禁用当前日期及未来31天的日期选择,你可以直接通过日期范围判断替代原有的特定日期数组匹配逻辑,修改后的代码如下:
function DisableDates(date) { // 获取当前日期并重置时分秒为0,避免时间部分干扰判断 var today = new Date(); today.setHours(0, 0, 0, 0); // 计算当前日期往后推31天的日期 var futureDate = new Date(today); futureDate.setDate(today.getDate() + 31); // 若日期在[今天, 未来31天]范围内则禁用,否则允许选择 return [date < today || date > futureDate]; } $(function() { $("#date").datepicker({ beforeShowDay: DisableDates }); });
代码说明:
- 重置当前日期的时分秒为0,确保和
datepicker返回的日期对象(默认时分秒为0)在同一基准上比较,避免因时间差导致判断错误。 - 使用
setDate()方法快速计算出未来31天的日期,无需手动拼接日期字符串。 - 判断逻辑直接通过日期对象的大小比较实现:不在禁用范围内的日期返回
[true](允许选择),在范围内的返回[false](禁止选择)。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

