我有这段代码可以继续,但我想要的是阻止而不是启用这些日期。所以正好相反。 任何人都知道如何基于此代码执行此操作? 一百万!
var ranges = [ { start: new Date(2010, 8, 1), end: new Date(2010, 8, 20) },
{ start: new Date(2010, 9, 1), end: new Date(2010, 9, 20) },
{ start: new Date(2010, 10, 1), end: new Date(2010, 10, 20) } ];
$(function() {
$("#datepicker").datepicker({
numberOfMonths: 1,
beforeShowDay: function(date) {
for(var i=0; i<ranges.length; i++) {
if(date >= ranges[i].start && date <= ranges[i].end) return [true, ''];
}
return [false, ''];
},
minDate: ranges[0].start,
maxDate: ranges[ranges.length -1].end
});
});
此外,我的日期格式是 dd-mm-yy。我对日期格式有点困惑。
最佳答案
您需要通过将 return [true, '']
和 return [false, '']
更改为 return [false, '' ]
和 分别返回 [true, '']
。您还需要删除 minDate: ranges[0].start
和 maxDate: ranges[ranges.length -1].end
这是一个演示(我稍微更改了日期以便更容易看到效果。只需转到 2016 年 9 月)。
var ranges = [ { start: new Date(2016, 8, 1), end: new Date(2016, 8, 20) },
{ start: new Date(2016, 9, 1), end: new Date(2016, 9, 20) },
{ start: new Date(2016, 10, 1), end: new Date(2016, 10, 20) } ];
$(function() {
$("#datepicker").datepicker({
numberOfMonths: 1,
beforeShowDay: function(date) {
for(var i=0; i<ranges.length; i++) {
if(date >= ranges[i].start && date <= ranges[i].end) return [false, ''];
}
return [true, ''];
}
});
});
@import url(https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<input type="text" id="datepicker">
编辑
只需在此处进行快速编辑即可解决日期问题。您的日期格式是非标准的 d(d)-m(m)-yyyy
。您可以通过将其转换为数组,将值 [day,month,year]
作为数字字符串(例如 ["4", "27", "2016"]
为 27-4-2016
)。这是执行此操作的片段
// our date-like string and an array equivalent
var d = '27-4-2016',
dArray = d.split('-');
// rearrange the month and day
dArray.splice(1, 0, dArray.shift());
// create a date object called date and pass our array to the constructor
var date = new Date(dArray); // Result: Wed Apr 27 2016 00:00:00 GMT-0500 (CDT)
关于javascript - 如何在 jQuery Datepicker ui 中阻止多个日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36849199/