que utiliza algunos de los ejemplos anteriores, pero tomó un enfoque diferente porque tengo que apoyar a la selección de una semana, pero la semana podría comenzar en cualquier día de la semana y tiene que cambiar en función de una variable. Configuré clases para agrupar cada td con una clase de semana, de modo que puedo resaltar fácilmente una semana que se solapa con un tr. En este ejemplo, datepickerStartWeekDay puede ser de 0 a 6, lo que representa una semana que comienza de domingo a sábado.
Aquí está mi código:
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;
}
Esto es grande, pero sólo funciona para la visualización en línea del planificador de evento (que se adjunta a div o intervalo). ¿Alguna sugerencia de cómo modificar esto cuando esté conectado al campo de texto normal? –
Realizado por Robert Gedelian: http://jsfiddle.net/MqD2n/ –
Pregunta rápida ... cuál es el fecha y hora de inicio correctas si establezco 'firstDay: 3' –