jQuery Datepicker отключить проблемы с датами в IE - PullRequest
1 голос
/ 27 июля 2010

Эй, ребята,

У меня большая проблема с моим JQuery Datepicker Script. Я использую jQuery 1.4.2 и jQuery Ui 1.8.

Справочная информация: У меня есть календарь бронирования с fromDate и toDate, и все даты, которые уже зарезервированы, отключены. Даты поступают из базы данных по AJAX Call.

Проблема: В Firefox все работает нормально, но IE 7/8 не отключает даты за исключением текущего месяца. Я не получаю сообщение об ошибке в IE 7/8!

Вот мой код:

Сначала AJAX Позвоните, чтобы узнать Даты:

    var navDays = (function () {
        var val = null;
        $.ajax({
            'async': false,
            'global': false,
            'url': WEG_URL+'rsv_avdates.php',
            'success': function (data) {
                val = data;                    
            }
        });
        return val;
    })();

    var disDays = navDays.split('|');  

В disDays теперь у меня есть даты вроде '2010-01-01', '2010-01-02', .....

Вот моя функция disableDates:

    function disabledDays(date) {
        var m = date.getMonth();
        var d = date.getDate();
        var y = date.getFullYear();

        for (var i = 0; i <= disDays.length-1; i++) {
          var myDate = new Date(disDays[i]);              
          if ((m == (myDate.getMonth())) && (d == (myDate.getDate())) && (y == (myDate.getFullYear())))
          {
            return [false];
          }
        }
        return [true];
    }   

и, наконец, мой вызов DatePicker:

    $('#fromdate, #todate').datepicker(
    {
        showOn: "both",
        buttonImage: 'images/calender.gif',
        buttonImageOnly: true,
        beforeShowDay: disabledDays,
        dateFormat: "dd.mm.y",
        firstDay: 1, 
        changeFirstDay: false
    }); 

Есть ли у вас идеи, почему все отлично работает в Firefox, Safari, Chrome, ... но НЕ в IE 7/8?

Спасибо за все.

Sascha

1 Ответ

1 голос
/ 27 июля 2010

Проблема в том, что эти строки даты не совсем подходят для простого создания экземпляра объекта даты.Вот как вы можете сделать «disDays» массивом дат, который позволит вам просто использовать их непосредственно в функции обратного вызова без необходимости постоянно создавать новые экземпляры Date:можно просто сделать это:

     function disabledDays(date) {
      var m = date.getMonth();
      var d = date.getDate();
      var y = date.getFullYear();

      for (var i = 0; i <= disDays.length-1; i++) {
        var myDate = disDays[i];             
        if ((m == (myDate.getMonth())) && (d == (myDate.getDate())) && (y == (myDate.getFullYear())))
        {
          return [false];
        }
      }
      return [true];
    }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...