我使用jQuery datepicker作爲內聯日曆,用於過濾頁面上的數據。我使用jQuery選擇器將日期鏈接重新編寫爲真正的超鏈接,而不是使用正常的後期事件。如何在月份更改後實現自定義功能?
所以,如果我http://mysite.com/mypage頁上,超鏈接將http://mysite.com/mypage/2011-1-1,http://mysite.com/mypage/2011-1-2等
所以我有一個datepicker
$(function() {
$('.calendar').datepicker({
showOtherMonths: false
});
configureCalendarLinks();
});
和一些代碼來修改鏈接:
configureCalendarLinks = function (calendarId) {
calendarId = calendarId || '';
var calendarIdSelector = calendarId != '' ? '#' + calendarId + ' ' : '';
var rootUrl = getShowRootUrl(location.href);
$(calendarIdSelector + 'a.ui-state-default').attr('href',
function() {
var url = rootUrl + .getFullDate($(this).text(), calendarId));
return url;
});
};
getFullDate = function (date, calendarId) {
calendarId = calendarId || '';
var dDate;
if (calendarId == '')
dDate = new Date(getDatePickerCalendarYear(), getDatePickerCalendarMonth(), date);
else
var dDate = new Date(getDatePickerCalendarYear(calendarId), getDatePickerCalendarMonth(calendarId), date);
return date;
};
getDatePickerCalendarYear = function (calendarId) {
calendarId = calendarId || '';
var calendarIdSelector = calendarId != '' ? '#' + calendarId + ' ' : '';
var calendarYear = $(calendarIdSelector + '.ui-datepicker-year').eq(0).text();
return calendarYear;
};
.getDatePickerCalendarMonth = function (calendarId) {
calendarId = calendarId || '';
var calendarIdSelector = calendarId != '' ? '#' + calendarId + ' ' : '';
var monthNumber = getMonthNumber($(calendarIdSelector + '.ui-datepicker-month').eq(0).text());
return monthNumber;
};
getMonthNumber = function (monthName) {
var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var index = $.inArray(monthName, monthNames);
return index;
};
一切正常,直到我改變了月份。如何在使用datePicker更改月份時再次運行代碼?我嘗試使用onChangeCalendar和onBeforeShow,但在日曆更改之前觸發,導致日期爲空。
理想情況下,我想在onAfterShow()方法中重新運行configureCalendarLinks,但是沒有這樣的事情。有沒有辦法做到這一點?
感謝
如果有一個簡單,更好不同的方式來完成我想要做的事。 。 。也沒關係。
不幸的是,onChangeMonthYear()的新的前一個月火災和它的細胞被渲染。 – John 2011-02-28 22:47:44
如果月份元素具有唯一的ID或類名稱,則可以將更改事件綁定到該元素。 $('。ui-datepicker-month')。bind('change',function(){}); – Seth 2011-02-28 23:06:42