2012-06-01 3 views
1

Согласно documentation, установка minimumDate календаря «сбрасывает любую дату с более ранней даты на эту дату», но я бы хотел отключить выбор любых предыдущих дат. Элемент управления отключает кнопку «предыдущий» месяц месяца минимальной даты, но позволяет выбрать более ранние даты.Как отключить даты, предшествующие YUI3 Calendar minimumDate?

ответ

2

Не нашли решение после некоторого поиска, я отправляю его, я, наконец, придумал. Использование календаря disabled dates rules, я создал следующее:

YUI().use('calendar', function (Y) { 

    var calendar, rules, 
     settings = { contentBox: '#dueDateSelect', minimumDate: new Date() }; 

    function getDisabledDatesRule(date, name) { 
     var year = date.getFullYear(), 
      month = date.getMonth(), 
      daybefore = date.getDate() - 1, 
      r = {}; 
     r[year] = {}; 
     r[year][month] = {}; 
     r[year][month]['1-' + daybefore] = name; 
     return r; 
    } 

    if (settings.minimumDate) { 
     settings.disabledDatesRule = 'days-before-min'; 
     rules = getDisabledDatesRule(
      settings.minimumDate, 
      settings.disabledDatesRule 
     ); 
    } 

    calendar = new Y.Calendar(settings).render(); 

    if (rules) { 
     calendar.set("customRenderer", { 
      rules: rules 
     }); 
    } 

}); 
+1

Спасибо! Я не понимаю, почему это не по умолчанию. Какая польза от наличия минимальных/максимальных дат с ежемесячной детализацией ?! – demonkoryu

0

Я знаю, что вы попросили о YUI3 календарь, но только если вам нужен второй вариант, вы, вероятно, хотите проверить JSCal2 я наконец-то понял, как выполните это с этим: все, что вам нужно сделать, это использовать нынешний день как «мин», поэтому сегодня это первый день выбора! Скопируйте и вставьте это, она работает:

<input size="40" id="cal_txt_date" /> 
<button id="cal_btn">...</button> 
<br /> 
<script type="text/javascript">//<![CDATA[ 
    var now = new Date(); 
    var cal = Calendar.setup({ min : now, trigger : "cal_btn", }); 
    cal.manageFields("cal_btn", "cal_txt_date", "%A %e de %B del %Y a las %I:%M %p"); 
//]]> 
</script> 

Как вы можете увидеть новый объект даты его создания в переменной «сейчас», и он установлен в «мин» (или максимум, если будущие даты не должны быть выбрано) Я надеюсь, что это поможет вам =) Если вы вставляете мой код так, как он есть здесь, он должен работать с JSCal2.

2

Я сделал это в более простой способ, я надеюсь, это поможет вам:

//Setting the date to today's date. 
var today = new Date(); 
var dd = today.getDate(); 
var mm = today.getMonth(); //January is 1 
var yyyy = today.getFullYear(); 


var calendar = new Y.Calendar({ 
    contentBox: "#mycalendar", 
    width:'340px', 
    showPrevMonth: true, 
    showNextMonth: true, 
    minimumDate: new Date(yyyy, mm, dd) , 
    date: new Date()}).render(); 
Смежные вопросы