, поэтому я потратил целый день на разработку и чтение (или наоборот), чтобы позволить моему jQuery datepicker выбирать и выделять разные даты.
Для этого мне удалось записать выбранные даты в массив, который визуализируется в простом текстовом поле.
Что мне не удалось сделать, так это навсегда изменить вид выбранной даты в указателе даты.
Я реализовал опцию beforeShowDay:, которая работает правильно после загрузки средства выбора даты, но, конечно, не вызывается непосредственно при выборе даты.
Для этого я догадался, что мне нужно обновить представление «onSelect», но обновление не работает должным образом.
Прямо сейчас у меня есть несколько небольших методов для обработки массива даты.
После добавления или удаления даты я пытаюсь обновить средство выбора даты.
После выбора даты я добавляю ее или удаляю из массива дат.
Кроме того, при выборе я сопоставляю выбранный день и пытаюсь добавитьClass ().
Но еще раз, я думаю, что я что-то пропустил, так как это не показано в моем указателе даты.
Вот мой код сейчас:
var dates = new Array();
function addDate(date) {
if (jQuery.inArray(date, dates) < 0 && date) {
dates.push(date);
}
}
function removeDate(index) {
dates.splice(index, 1);
}
// Adds a date if we don't have it yet, else remove it and update the dates
// textfield
function addOrRemoveDate(date) {
var index = jQuery.inArray(date, dates);
if (index >= 0) {
removeDate(index);
updateDatesField(dates);
} else {
addDate(date);
updateDatesField(dates);
}
jQuery(calContainer).datepicker("refresh");
}
var calContainer = document.getElementById("calendar-container");
jQuery(calContainer).datepicker({
minDate : new Date(),
dateFormat : "@",
onSelect : function(dateText, inst) {
addOrRemoveDate(dateText);
jQuery(".ui-datepicker-calendar tbody tr td a").each(function() {
if (jQuery(this).text() == inst.selectedDay) {
jQuery(this).addClass("ui-state-highlight");
jQuery(this).parent().addClass("selected");
}
});
// addTimeSelectorColumns(dates);
},
beforeShowDay : function(_date) {
var gotDate = -1;
for ( var index = 0; index < dates.length; index++) {
if (_date.getTime() == dates[index]) {
gotDate = 1;
} else {
gotDate = -1;
}
}
if (gotDate >= 0) {
return [ true, "ui-datepicker-today", "Event Name" ];
}
return [ true, "" ];
}
});
function updateDatesField(dates) {
if (dates.length > 0) {
var tmpDatesStrArr = new Array();
var dateString = "";
var datesField = document.getElementById("dates");
for ( var index = 0; index < dates.length; index++) {
var dateNum = dates[index];
var tmpDate = new Date();
tmpDate.setTime(dateNum);
dateString = tmpDate.getDate() + "." + tmpDate.getMonth() + "."
+ tmpDate.getFullYear();
tmpDatesStrArr.push(dateString);
}
jQuery(datesField).val(tmpDatesStrArr);
}
}
(Я все еще новичок в Javascript / jQuery, поэтому любая помощь или подсказки в моем кодировании приветствуются, кстати ...)