JQuery DatePicker выделить праздники - PullRequest
1 голос
/ 21 февраля 2012

Я пытаюсь создать календарь jquery datepicker, который бы выделил праздники и назвал название праздника в качестве всплывающей подсказки, когда день на датере выбирается.Даты праздников взяты из php-файла (holidays.php).Моя проблема в том, что ... я не могу выделить ВСЕ праздники, вместо этого, это только одна дата.Точнее, только первая возвращенная дата.

$(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();
        });

  });



});

когда я оповещаю о значениях в массиве result[] вне функции nationalDays, сохраненные значения кажутся правильными.

  for (i = 0; i < result.length; i++) {
  var f=result[i][0]+"-"+result[i][1]+"-"+result[i][2];
  alert(f); 
  }

, но по какой-то причине, когда яОповещать значения result[] INSIDE цикла for в функции nationalDays, он возвращает только первую дату, сохраненную в массиве result [].Но почему?

У кого-нибудь есть идеи? .. Я был бы очень признателен.:)

1 Ответ

0 голосов
/ 24 февраля 2012

Я уже знаю, где я ошибся.

if (date.getFullYear() == d.getFullYear()
                      && date.getMonth() == d.getMonth()
                      && date.getDate() == d.getDate()) {
                    return [true, 'holiday', result[i][3]];
                 } else {
                  return [true];
                 }

Должно было быть

if (date.getFullYear() == d.getFullYear()
                      && date.getMonth() == d.getMonth()
                      && date.getDate() == d.getDate()) {
                    return [true, 'holiday', result[i][3]];
                 } 
                  return [true];

Я только что удалил оператор else, и он сработал!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...