1
私は、休日を強調表示し、datepicker上の日が上がったときに休日の名前をツールチップとして作成するjquery datepickerカレンダーを作成しようとしています。休日の日付はPHPファイル(holidays.php)から来ました。私の問題は..私はすべての休日を強調表示するように見えることはできません、それはただ一つの日付を強調表示します。具体的には、返された最初の日付だけです。私はnationalDays関数のアレイresult[]
内外の値を警告するときjquery datepicker highlight holidays
$(document).ready(function(){
var holiDays = (function() {
var val = null;
$.ajax({
'async': false,
'global': false,
'url': 'holidays.php',
'success': function (data) {
val = data;
}
});
return val;
})();
var result = [];
var holiDays = holiDays.split(',');
var s, k;
for (s = 0, k = -1; s < holiDays.length; s++) {
if (s % 4 === 0) {
k++;
result[k] = [];
}
result[k].push(holiDays[s]);
}
// This for loop is to check whether the values stored in result[] are correct
for (i = 0; i < result.length; i++) {
var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
alert(f);
}
function nationalDays(date) {
var m = date.getMonth();
var d = date.getDate();
var y = date.getFullYear();
for (i = 0; i < result.length; i++) {
var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
// WHEN I ALERT THE VALUE OF f HERE,
// IT ALWAYS DISPLAY THE FIRST VALUE IN THE RESULT ARRAY. WHY?
alert(f);
var d = new Date(f);
if (date.getFullYear() == d.getFullYear()
&& date.getMonth() == d.getMonth()
&& date.getDate() == d.getDate()) {
return [true, 'holiday', result[i][3]];
} else {
return [true];
}
}
}
$(function() {
$('input.pickerClass').live('click', function() {
$(this).datepicker({dateFormat: 'yy-mm-dd', beforeShowDay: nationalDays }).focus();
});
});
});
、格納された値は、正しいと思われました。
for (i = 0; i < result.length; i++) {
var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
alert(f);
}
私はnationalDays関数の下でループのINSIDE result[]
の値を警告するとき、いくつかの理由で、それだけで[]配列結果に格納された最初の日付を返します。しかし、なぜ?
誰もがアイデアを持っていますか?私はそれほど感謝します。 :)