如何禁用YUI3 Calendar minimumDate之前的日期?

时间:2012-06-01 20:20:58

标签: javascript calendar yui3

根据documentation,设置日历的minimumDate将“重置此日期之前的任何日期”,但我想禁用之前任何日期的选择。该控件禁用最小日期月份的“上一个”月份按钮,但仍允许选择较早的日期。

3 个答案:

答案 0 :(得分: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 :(得分: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();

答案 2 :(得分:0)

我知道您已经询问了YUI3日历,但只有当您需要第二个选项时,您可能还想测试JSCal2 我终于明白了如何用它实现这一目标:你需要做的只是将当天用作“min”所以今天它是第一个可选择的日子!复制并粘贴它,它的工作原理:

<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>

正如你可以看到它在变量“now”中创建的新日期对象,它被设置为“min”(如果不应该选择未来日期,则为max)我希望这可以帮助你=)如果你粘贴我的代码就在这里,它应该与JSCal2一起使用。