2011-02-28 45 views
1

我使用jQuery datepicker作爲內聯日曆,用於過濾頁面上的數據。我使用jQuery選擇器將日期鏈接重新編寫爲真正的超鏈接,而不是使用正常的後期事件。如何在月份更改後實現自定義功能?

所以,如果我http://mysite.com/mypage頁上,超鏈接將http://mysite.com/mypage/2011-1-1http://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,但是沒有這樣的事情。有沒有辦法做到這一點?

感謝

如果有一個簡單,更好不同的方式來完成我想要做的事。 。 。也沒關係。

回答

1

這可能是你在找什麼?

onChangeMonthYear

http://jqueryui.com/demos/datepicker/#event-onChangeMonthYear

+0

不幸的是,onChangeMonthYear()的新的前一個月火災和它的細胞被渲染。 – John 2011-02-28 22:47:44

+0

如果月份元素具有唯一的ID或類名稱,則可以將更改事件綁定到該元素。 $('。ui-datepicker-month')。bind('change',function(){}); – Seth 2011-02-28 23:06:42

+0

20 John 2011-02-28 23:32:17

相關問題