Kiedyś niektóre z powyższych przykładów, ale miała inne podejście, bo trzeba wspierać wybierając w tygodniu, ale w tygodniu można uruchomić w dowolnym dniu tygodnia i musi ulec zmianie na podstawie zmiennej. Założyłem klasy, aby pogrupować każdy td z klasą tygodniową, dzięki czemu mogę łatwo wyróżnić tydzień, który pokrywa się z tr. W tym przykładzie datepickerStartWeekDay może mieć wartość od 0 do 6, reprezentującą tydzień rozpoczynający się od niedzieli do soboty.
Oto mój kod:
var $elem = $("input.my-date-picker");
var weekCounter = 1;
var datepickerStartWeekDay = 1;
options = {
changeMonth: true,
changeYear: true,
showOtherMonths: true,
selectOtherMonths: true,
onClose: function (dateText, inst) {
weekCounter = 1;
},
onSelect: function(dateText, inst) {
if (datepickerStartWeekDay != null) {
var elem = $(this);
var date = elem.datepicker('getDate');
var curDayNum = date.getDay();
var offset;
if (curDayNum > datepickerStartWeekDay) {
offset = -(curDayNum - datepickerStartWeekDay);
}
else {
offset = -(7 - (datepickerStartWeekDay - curDayNum));
}
var wkStartDate = new Date(date.addDays(offset));
elem.val(wkStartDate);
}
},
beforeShowDay: function(date) {
var retClass;
// datepickerStartWeekDay: 0 = Sunday.. 6 = Saturday
// Set up weeks based on the start day with classes.
// week1, week2, week3, etc based on the start day of the week
if (datepickerStartWeekDay != null) {
if (date.getDay() == datepickerStartWeekDay) {
weekCounter += 1;
}
retClass = [true, 'week' + weekCounter];
}
else {
retClass = [true, ''];
}
return retClass;
},
onChangeMonthYear: function(year, month, inst) {
weekCounter = 1;
}
};
$elem.datepicker(options);
// Event to list for mouseover for week selection
$(".ui-datepicker-calendar td").live('mouseover', function (ev) {
var targetElem = $(ev.currentTarget);
targetElem.closest("tbody").find(".ui-week-hover").removeClass("ui-week-hover");
for (var i = 0; i < 8; i++) {
if (targetElem.hasClass("week" + i)) {
targetElem.closest("tbody").find(".week" + i).addClass("ui-week-hover");
continue;
}
}
});`
// CSS
.ui-week-hover a {
background-color: #eef6f9 !important;
}
To jest dobre, ale działa tylko na rolkach wyświetlaniem datepicker (dołączony do div lub zakresu). Jakieś sugestie, jak zmodyfikować ten tekst do standardowego pola tekstowego? –
Wykonane przez Roberta Gedeliana: http://jsfiddle.net/MqD2n/ –
Szybkie pytanie ... co to jest właściwa data początkowa i końcowa, jeśli ustawię "firstDay: 3" –