Jquery UIdateselect器。 禁用date数组

我一直在试图寻找解决scheme,以我的jquery ui datepicker的问题,我没有运气。 这是我正在做的事情…

我有一个应用程序,我正在做一些复杂的PHP来返回一个JSON数组的date,我想要从Jquery UIdateselect器阻塞。 我正在返回这个数组:

["2013-03-14","2013-03-15","2013-03-16"] 

是不是有一个简单的方法来简单地说:从datepicker块这些date?

我已经阅读了UI文档,并且没有任何东西可以帮助我。 任何人有任何想法?

你可以使用beforeShowDay来做到这一点

以下示例2013年3月14日至2013年3月16日禁用date

 var array = ["2013-03-14","2013-03-15","2013-03-16"] $('input').datepicker({ beforeShowDay: function(date){ var string = jQuery.datepicker.formatDate('yy-mm-dd', date); return [ array.indexOf(string) == -1 ] } }); 

演示: 小提琴

IE 8没有indexOf函数,所以我用jQuery inArray代替。

 $('input').datepicker({ beforeShowDay: function(date){ var string = jQuery.datepicker.formatDate('yy-mm-dd', date); return [$.inArray(string, array) == -1]; } }); 

如果你想阻止周日(或其他日子)以及date数组,我使用下面的代码:

 jQuery(function($){ var disabledDays = [ "27-4-2016", "25-12-2016", "26-12-2016", "4-4-2017", "5-4-2017", "6-4-2017", "6-4-2016", "7-4-2017", "8-4-2017", "9-4-2017" ]; //replace these with the id's of your datepickers $("#id-of-first-datepicker,#id-of-second-datepicker").datepicker({ beforeShowDay: function(date){ var day = date.getDay(); var string = jQuery.datepicker.formatDate('dm-yy', date); var isDisabled = ($.inArray(string, disabledDays) != -1); //day != 0 disables all Sundays return [day != 0 && !isDisabled]; }}); }); 
 $('input').datepicker({ beforeShowDay: function(date){ var string = jQuery.datepicker.formatDate('yy-mm-dd', date); return [ array.indexOf(string) == -1 ] } }); 

beforeShowDate没有为我工作,所以我继续开发自己的解决scheme:

 $('#embeded_calendar').datepicker({ minDate: date, localToday:datePlusOne, changeDate: true, changeMonth: true, changeYear: true, yearRange: "-120:+1", onSelect: function(selectedDateFormatted){ var selectedDate = $("#embeded_calendar").datepicker('getDate'); deactivateDates(selectedDate); } }); var excludedDates = [ "10-20-2017","10-21-2016", "11-21-2016"]; deactivateDates(new Date()); function deactivateDates(selectedDate){ setTimeout(function(){ var thisMonthExcludedDates = thisMonthDates(selectedDate); thisMonthExcludedDates = getDaysfromDate(thisMonthExcludedDates); var excludedTDs = page.find('td[data-handler="selectDay"]').filter(function(){ return $.inArray( $(this).text(), thisMonthExcludedDates) >= 0 }); excludedTDs.unbind('click').addClass('ui-datepicker-unselectable'); }, 10); } function thisMonthDates(date){ return $.grep( excludedDates, function( n){ var dateParts = n.split("-"); return dateParts[0] == date.getMonth() + 1 && dateParts[2] == date.getYear() + 1900; }); } function getDaysfromDate(datesArray){ return $.map( datesArray, function( n){ return n.split("-")[1]; }); } 

对于DD-MM-YY使用这个代码:

var array = [“03-03-2017','03 -10-2017','03 -25-2017”]

 $('#datepicker').datepicker({ beforeShowDay: function(date){ var string = jQuery.datepicker.formatDate('dd-mm-yy', date); return [ array.indexOf(string) == -1 ] } }); function highlightDays(date) { for (var i = 0; i < dates.length; i++) { if (new Date(dates[i]).toString() == date.toString()) { return [true, 'highlight']; } } return [true, '']; }