2013-07-01 3 views
0

Я попытался включить выбор только первой даты каждого месяца в jQuery datepicker. Возможные даты указаны в var enabledates.отключить jQuery DatePicker дат

var enabledDays = ["6-1-2013", "7-1-2013", "8-1-2013", 
        "9-1-2013", "10-1-2013", "11-1-2013"]; 
function nationalDays(date) { 
    var m = date.getMonth(), d = date.getDate(), y = date.getFullYear(); 
    for (i = 0; i < enabledDays.length; i++) { 
     if($.inArray((m+1) + '-' + d + '-' + y, enabledDays) != -1 
      || new Date() > date) {   
      return [true]; 
     } 
    } 
    return [false]; 
} 

$(function(){ 
    $.datepicker.setDefaults($.extend($.datepicker.regional["ru"])); 
    $("#datepicker1, #datepicker2, #datepicker3").datepicker({ 
                dateFormat: "yy-mm-dd", 
                duration: "normal", 
                numberOfMonths: [ 1, 2 ], 
                constrainInput: true, 
                beforeShowDay: nationalDays 
               }); 
}); 

Как я могу применить это ограничение даты до всего календаря?

+0

Возможно, вы могли бы получить что-то от этого. http://jsfiddle.net/HP7A8/ –

+0

Спасибо Педро, я попробую ... –

+0

Не могли бы вы помочь мне добавить к этому языку региона? –

ответ

0

Если вы хотите включить диапазон, я бы сказал, что вы можете использовать свойства Option minDate maxDate.

Что касается вашей проблемы, чтобы включить все Даты из массива. Пожалуйста, посмотрите на эту скрипку http://jsfiddle.net/uYe9X/

function available(date) { 
    var dt= date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if (availableDates.indexOf(dt) !== -1) { 
    return [true, "","available"]; 
    } else { 
    return [false,"","not available"]; 
    } 
} 

Как Педро упоминалось вы можете использовать beforeShowDay Обратный вызов для ссылки на функцию, которая вычисляет, если день должен быть включен. Обратный вызов используется для каждого дня, который отображается в параметре datepicker. http://api.jqueryui.com/datepicker/#option-beforeShowDay

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