【发布时间】:2017-08-04 06:23:01
【问题描述】:
我正在使用 jQuery datepicker,我需要一个每隔一周禁用一次的功能。
例如:偶数周 (2,4,6..) 中的所有天都启用并且可以选择 - 但奇数周 (1,3,5..) 中的所有天都禁用并且无法选择。
我知道我可以通过 beforeshowday 禁用特定日期/或日期。但这不是我想要的……
有什么解决办法吗?谢谢。
【问题讨论】:
标签: javascript jquery datepicker
我正在使用 jQuery datepicker,我需要一个每隔一周禁用一次的功能。
例如:偶数周 (2,4,6..) 中的所有天都启用并且可以选择 - 但奇数周 (1,3,5..) 中的所有天都禁用并且无法选择。
我知道我可以通过 beforeshowday 禁用特定日期/或日期。但这不是我想要的……
有什么解决办法吗?谢谢。
【问题讨论】:
标签: javascript jquery datepicker
您可以使用datepicker 的beforeShowDay 功能来禁用。下面的代码使用 moment 让一周变得更轻松,但您也可以尝试其他方法:
$( function() {
$( "#datepicker" ).datepicker({
beforeShowDay:function(d){
var m=moment(d);
//week number is even
var en=m.week()%2===0;
//its first and monday
en|=(m.date()===1 && m.isoWeekday()===1);
return [en,"","Odd Week"];
}
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://momentjs.com/downloads/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" id="datepicker"></p>
更新为在奇数周启用第一个星期一。检查1-June-2015
【讨论】:
var nWeekOfYear = $.datepicker.iso8601Week(new Date(d)); 如在https://stackoverflow.com/a/12515882/1856258 中看到的那样