如何在datepicker中同时禁用自定义指定日期与过往历史日期
Datepicker 禁用过往日期+自定义指定日期实现方案
你只需要在原有beforeShowDay回调中补充过往日期的判断逻辑即可,修改要点如下:
- 先生成今日的零点日期对象,避免时间部分导致的当日日期误判
- 优先判断待渲染日期是否早于今日,早于则直接返回false禁用
- 保留原有自定义禁用日期的判断逻辑
- 注意原有自定义禁用日期数组中不要存在多余空格,避免日期匹配失效
修改后的完整代码如下:
<div class='input-group date' id='datepicker1'> <asp:TextBox runat="server" ID="txtdatepicker"> </asp:TextBox> </div> <script type="text/javascript"> $(function () { // 注意修正数组中日期的多余空格,避免匹配失败 var disableSpecificDates = ["19-8-2021", "28-8-2021", "26-8-2021"]; // 生成今日零点日期,消除时间部分影响 var today = new Date(); today.setHours(0,0,0,0); $('#datepicker1').datepicker({ format: 'mm/dd/yyyy', beforeShowDay: function (date) { // 先判断是否为过往日期,是则直接禁用 if(date < today){ return false; } // 再判断是否为自定义禁用日期 var dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear(); return disableSpecificDates.indexOf(dmy) === -1; } }); $('#datepicker1').datepicker("setDate", new Date()); }); </script>
如果使用的是Bootstrap Datepicker,返回值可调整为[false]格式适配组件规范,大部分jQuery系的datepicker组件上述逻辑都可直接生效。
内容的提问来源于stack exchange,提问作者GwenGo On
相关产品推荐
相关产品推荐

