我一直使用this question作爲關聯事件與jQuery UI Datepicker的指南。如何從Ajax響應中重新填充jquery UI日期選擇器
我有我的日期和事件突出顯示當前月份工作正常。我的問題是我怎麼能刷新基於進一步Ajax調用新的事件(如存儲在SpektrixApp.events一組新的日曆上的社交活動),日曆(見onChangeMonthYear在下面的代碼)
SpektrixApp = {};
(function($) {
$.post(
// see tip #1 for how we declare global javascript variables
SpektrixAjax.ajaxurl,
{
// here we declare the parameters to send along with the request
// this means the following action hooks will be fired:
// wp_ajax_nopriv_spektrix_get_events and wp_ajax_spektrix_get_events
action : 'spektrix_get_events',
// other parameters can be added along with "action"
monthId : 9
},
function(response) {
SpektrixApp.events = response;
//console.log(events[1]);
$("#spektrix-event-calendar").datepicker({
beforeShowDay: function(date) {
var result = [true, '', null];
var matching = $.grep(SpektrixApp.events, function(event) {
//console.log(new Date(event.Date).valueOf());
dateToHighlight = new Date(event.Date).valueOf();
return dateToHighlight === date.valueOf();
});
if (matching.length) {
result = [true, 'highlight', null];
}
return result;
},
onSelect: function(dateText) {
$('#spektrix-dialog').empty(); //empty the target div
var date,
selectedDate = new Date(dateText),
i = 0,
event = null;
daysEvents = [];
/* Determine if the user clicked an event: */
while (i < events.length && !event) {
//console.log(events[i].Date);
date = new Date(SpektrixApp.events[i].Date);
if (selectedDate.valueOf() === date.valueOf()) {
event = SpektrixApp.events[i];
daysEvents.push(event);
}
i++;
}
if (daysEvents) {
for(i = 0; i < daysEvents.length; i++) {
/* If the event is defined, perform some action here; show a tooltip, navigate to a URL, etc. */
var day = new Date(event.Date).getDate().toString();
$('#spektrix-dialog').append('<div><a href="/whats-on/'+slugify(event.Title)+'">'+event.Title+'</a></div>');
}
}
},
onChangeMonthYear: function(year, month,instance) {
jQuery.post(
// see tip #1 for how we declare global javascript variables
SpektrixAjax.ajaxurl,
{
// here we declare the parameters to send along with the request
// this means the following action hooks will be fired:
// wp_ajax_nopriv_spektrix_get_events and wp_ajax_spektrix_get_events
action : 'spektrix_get_events',
// other parameters can be added along with "action"
monthId : month
},
function(response) {
SpektrixApp.events = response;
$("#spektrix-event-calendar").datepicker("refresh");
}
);
}
});
//console.log(events);
}
);
})(jQuery);
function slugify(input)
{
return input.replace(/\s+/g, '-').toLowerCase();
}
一兩件事是真的誤導是你的術語'event'的使用,當你說'怎麼樣我可以使用基於ajax進一步調用的新事件來刷新日曆嗎?您是在談論軟件事件嗎?或者您是在談論在日曆中添加社交活動......「OnClick」將是一個軟件事件,「去看電影'是一個社交活動。 –
好點。我指的是日曆中事件的事件,而不是JavaScript或程序事件。 – codecowboy