我有这个代码继续,但我想要的是阻止这些日期而不是启用。所以反过来说。 任何知道如何根据此代码执行此操作的人? 万分感谢!
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
});
});
另外,我的dateformat是dd-mm-yy。我对日期格式感到有些困惑。
答案 0 :(得分:3)
您需要分别将return [true, '']
和return [false, '']
更改为return [false, '']
和return [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)