2010-09-28 4 views
1

У меня есть следующий код:JQuery DatePicker - проблема beforeShowDay

$(document).ready(function(){ 

    $(".datepicker").each(function() { 

    $(this).datepicker({ 
    beforeShowDay: function(date){ return [$(this).parent().find("span.days").html(), ""] }, 

    }); 
    }); 

    }); 

С помощью этого кода тела ...

<div> 
<span class="days">(date.getDay() == 1 || date.getDay() == 4)</span> 
<input type="text" class="datepicker"> 
</div> 


<div> 
<span class="days">(date.getDay() == 2 || date.getDay() == 5)</span> 
<input type="text" class="datepicker"> 
</div> 

То, что я хочу, чтобы иметь возможность сделать это у каждого DatePicker разные дни pickable.

Способ, которым я пытаюсь это сделать (помещая переменную часть кода beforeShowDay в промежутке), может быть не самым элегантным, поэтому не стесняйтесь разделить мой код и при необходимости изменить его.

ответ

3

Вы можете создать объект Сохраняя pickable дней, как это:

var pickable = { dp1: [1, 4], dp2: [2, 5] }; 
$('.datepicker').each(function() { 
    $(this).datepicker({ 
    beforeShowDay: function(date){ 
     var day = date.getDay(), days = pickable[this.id]; 
     return [$.inArray(day, days) > -1, ""]; 
    } 
    }); 
});​ 

You can give it a try here. dp1 и dp2 являются Идентификаторами controls..or любого атрибута можно отобразить на самом деле, как это:

<input type="text" class="datepicker" id="dp1"> 
<input type="text" class="datepicker" id="dp2"> 

Концепция довольно проста, возьмите идентификатор, чтобы получить массив дней для этого сборщика, а затем использовать $.inArray(), чтобы узнать, находится ли тот день, когда мы находимся в этом массиве. Если эти выборы дня могут быть общими, не используйте идентификатор, вместо этого сделайте что-то вроде data-pickerType для атрибута и замените this.id на $(this).attr("data-pickerType") в коде выше.

Примечание: Я оставил .each() неповрежденным, потому что я знаю, что вам это нужно по причинам, выходящим за текущий вопрос.

+0

Это будет сделано! благодаря – Tom

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