私はjqueryとjquery ui 1.8.7を使用しています。ページの読み込み時にインラインの日付ピッカーを作成し、ajax 成功関数で $('#mydiv').datepicker('refresh'); を呼び出しています。(以下にコードを掲載します)。
データが ajax から返された場合 (たとえば、更新時)、beforeShowDay は highlightDays() 関数を呼び出します。すべてがクラッシュして停止する前に、正しいデータで highlightDays を 2 回ヒットしていることを知っており、「TypeError: 未定義のプロパティ 0 を読み取ることができません」というエラーが表示されます。
一定時間後にイベント配列が破棄されているようですが、実際に何が起こっているのかを言うには、ajax について十分に知りません。これを修正するために誰かが私を正しい方向に向けることができますか?
function highlightDays(date) {
var day = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
console.log(typeof(events)); // This will return as an object twice before throwing an the above mentioned error
if($.inArray(day, events) !== -1) {
return new Array(true, '');
} else {
return new Array(false, '');
}
}
function getEventData() {
return $.ajax({
url: Drupal.settings.basePath + 'correct_path',
data: search+'&path='+window.location.pathname,
dataType: 'json',
type: 'POST',
success: function(data, textStatus, jqXHR) {
// save our returned data
events = new Object();
events = data;
$('#mydiv').datepicker("refresh");
}
});
}
function createDatepicker() {
// Attach datepicker to the parent div so it returns as
// inline.
$('#mydiv').datepicker({
dateFormat: 'yy-mm-dd',
speed: 'immediate',
altField: '#edit-date-filter-value-datepicker-popup-1',
beforeShowDay: function(date) {
if(typeof (_event_days) === 'undefined') {
return new Array(true, '');
} else {
highlightDays(date);
}
},
});
$('#myinput').hide();
}
getEventData();
createDatepicker();