2011-12-29 5 views
0

Я использую JQuery UI datepicker в одном из моих проектов. Мне нужно отключить даты отпуска в США. Я пробовал jQuery UI Datepicker - Disable specific days и Can the jQuery UI Datepicker be made to disable Saturdays and Sundays (and holidays)?JQuery UI: datepicker

Но они не сработали. Как я могу сделать особые дни невыбираемыми.

Я также пробовал его с http://tokenposts.blogspot.com/2011/05/jquery-datepicker-disable-specific.html, snippet работает appart, но не в моем проекте. Вот это:

var unavailableDates = ["31-12-2012"]; 

function unavailable(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, unavailableDates) == -1) { 
    return [true, ""]; 
    } else { 
    return [false,"","Unavailable"]; 
    } 
} 


Drupal.behaviors.date_popup = function (context) { 
    for (var id in Drupal.settings.datePopup) { 
    $('#'+ id).bind('focus', Drupal.settings.datePopup[id], function(e) { 
     if (!$(this).hasClass('date-popup-init')) { 
     var datePopup = e.data; 
     // Explicitely filter the methods we accept. 
     switch (datePopup.func) { 
      case 'datepicker': 
      $(this) 
       .datepicker({ minDate: +1, maxDate: "+3Y", beforeShow: unavailable }) 
       .addClass('date-popup-init') 
      $(this).click(function(){ 
       $(this).focus(); 
      }); 
      break; 

      case 'timeEntry': 
      $(this) 
       .timeEntry(datePopup.settings) 
       .addClass('date-popup-init') 
      $(this).click(function(){ 
       $(this).focus(); 
      }); 
      break; 
     } 
     } 
    }); 
    } 
}; 
+0

Если бы они работали на OP, разместившего на вопросы, я не могу понять, почему это не будет для вас ... если вы не показать нам код, который вы пытаетесь и сказать нам, что ** ** Безразлично 't work – JMax

+0

Я разместил выше – orif

ответ

0

Я нашел решение. Просто используйте атрибут «beforeshow» в первую очередь других функций.

natDays = [ 
    [1, 1, 'New Year'], 
    [1, 16, 'Martin Luther King'], 
    [1, 20, 'Inauguration Day'], 
    [2, 14, "St. Valentine's Day"], 
    [2, 20, "Washington's Day"], 
    [5, 21, 'Memorial Day'], 
    [6, 4, 'Independence Day'], 
    [9, 3, 'Labour Day'], 
    [11, 11, 'Veterans Day'], 
    [11, 22, 'Thanks Giving Day'], 
    [12, 25, 'Christmas'], 
    [1, 7, 'Custom'] 
]; 

function nationalDays(date) { 
    for (i = 0; i < natDays.length; i++) { 
     if (date.getMonth() == natDays[i][0] - 1 
       && date.getDate() == natDays[i][1]) { 
      return [false, natDays[i][2] + '_day']; 
     } 
    } 
    return [true, '']; 
} 

function noWeekendsOrHolidays(date) { 
    var noWeekend = $.datepicker.noWeekends(date); 
    if (noWeekend[0]) { 
     return nationalDays(date); 
    } else { 
     return noWeekend; 
    } 
} 


Drupal.behaviors.date_popup = function (context) { 
    for (var id in Drupal.settings.datePopup) { 
     $('#' + id).bind('focus', Drupal.settings.datePopup[id], function(e) { 
      if (!$(this).hasClass('date-popup-init')) { 
       var datePopup = e.data; 
       // Explicitely filter the methods we accept. 
       switch (datePopup.func) { 
        case 'datepicker': 
         $(this) 
           .datepicker({ 
               beforeShowDay: noWeekendsOrHolidays, 
               minDate:+1, 
               maxDate:"+3Y" 
              }) 
           .addClass('date-popup-init') 
         $(this).click(function() { 
          $(this).focus(); 
         }); 
         break; 

        case 'timeEntry': 
         $(this) 
           .timeEntry(datePopup.settings) 
           .addClass('date-popup-init') 
         $(this).click(function() { 
          $(this).focus(); 
         }); 
         break; 
       } 
      } 
     }); 
    } 
}; 
0

еще некоторая информация о том, что именно вы пытались до сих пор было бы здорово, но в любом случае: this (very simple) tutorial работал идеально подходит для меня - только основная функция возвращает истинное/ложное тоже beforeShowDay.

+0

Я пробовал эту ссылку, но это workin appart, но если интегрировать ее с моим проектом, она не работает. – orif