tôi đã sử dụng một số các ví dụ trên nhưng sử dụng phương pháp khác nhau bởi vì tôi cần để hỗ trợ việc lựa chọn một tuần nhưng tuần này có thể bắt đầu vào bất kỳ ngày nào trong tuần và cần phải thay đổi dựa trên một biến. Tôi thiết lập các lớp học để nhóm mỗi td với một lớp học tuần vì vậy tôi có thể dễ dàng đánh dấu một tuần chồng lên nhau một tr. Trong ví dụ này, datepickerStartWeekDay có thể từ 0 đến 6 đại diện cho một tuần bắt đầu từ Chủ Nhật đến Thứ Bảy.
Đây là mã của tôi:
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;
}
Nguồn
2015-10-29 04:36:08
Điều này thật tuyệt vời nhưng chỉ hoạt động cho hiển thị nội tuyến của datepicker (được đính kèm với div hoặc span). Bất kỳ đề xuất làm thế nào để sửa đổi này khi ttached vào trường văn bản thông thường? –
Được tạo bởi Robert Gedelian: http://jsfiddle.net/MqD2n/ –
Câu hỏi nhanh ... startDate và endDate thích hợp là gì nếu tôi đặt 'firstDay: 3' –