2014-01-15 4 views
0

У меня есть эта функция, которая будет собирать определенное числовое число дней, чтобы использовать в другой функции, которая отключит эти дни.Настройка jquery datepicker определенных дней недели unclickable

/* grab off days*/ 
function off(){ 
    for (var key in offDays) { 
     if (offDays.hasOwnProperty(key)) { 
      return offDays[key]; 

     } 
    } 
} 

Например, вернется 0, 1 для воскресенья и понедельника. Теперь я хочу использовать те дни, чтобы отключить дни на datepicker, но когда я использую следующий код, он отключает только первый из них в порядке. Думаю, мне нужно каким-то образом пробраться, но как?

var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); 
//console.log('Checking (raw): ' + m + '-' + d + '-' + y); 
for (i = 0; i < disabledDays.length; i++) { 
    if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) !== -1 || new Date() > date) { 
     //console.log('bad: ' + (m+1) + '-' + d + '-' + y + '/' + disabledDays[i]); 
     return [false]; 
    } 
      if(date.getDay() === off()){ 
       return [false]; 
      } 


} 

проверки последнего, если заявление

+0

что 'offDays' это массив? –

+0

да! ех. {«tues»: 2, «weds»: 3, «thurs»: 4} –

+0

также можете делиться «disabledDays» –

ответ

1

Пробег:

var disabledDays = ["1-24-2014"]; 
var offDays = { 
    "tues": 2, 
    "weds": 3, 
    "thurs": 4 
}; 
var offds = $.map(offDays, function (day) { 
    return day 
}) 
$('input').datepicker({ 
    beforeShowDay: function (date) { 
     var m = date.getMonth(), 
      d = date.getDate(), 
      y = date.getFullYear(), 
      str = (m + 1) + '-' + d + '-' + y; 
     if ($.inArray(str, disabledDays) !== -1 || new Date() > date) { 
      return [false]; 
     } 
     if ($.inArray(date.getDay(), offds) !== -1) { 
      return [false]; 
     } 
     return [true] 
    } 
}) 

Демо: Fiddle

0

вы можете использовать beforeShowDay функцию, чтобы проверить, если данный день включен или не нравится:

beforeShowDay: function (a) { 
    var d = a.getFullYear() + '-' + (a.getMonth() + 1) + '-' + a.getDate(); 
    if (d==='2014-1-20') {//WILL DISABLE 20 Jan 2014 
     return [false, "", "disabled date"]; 
    } else { 
     return [true, "", ""]; 
    } 
} 

Рабочий образец здесь в этом fiddle

Смежные вопросы