【问题标题】:Javascript NoGray Calendar find next available date after chosen blocked dates if today is blocked如果今天被阻止,Javascript NoGray Calendar 在选择的阻止日期之后查找下一个可用日期
【发布时间】:2014-07-22 22:22:39
【问题描述】:

我正在使用NoGray Calendar 并有以下代码:

my_cal1 = new ng.Calendar({
    input: {date:'date1', month:'month1', year:'year1'},
    selected_date:new Date(),display_date:new Date(),
    dates_off:[{date:22, month:6},
    events: {
        onDateClick: function(dt) {
            this.select_date(dt);
        }
    }

但是当它与我所在的那一天是同一天时,它显示为空白。

我怎样才能让它显示并查找下一个可用日期从被阻止的日期之后开始?

可以在http://www.nogray.com/example.php?ID=260找到示例日历

我要设置的区域是 start_datedisplay_date 到下一个可用日期,因此如果我将接下来的 3 天作为休息日,它会将日期显示为这 3 天之后的下一个可用日期什么时候开始。

这可以通过 NoGray 软件中的功能来完成,还是我需要使用 PHP 脚本来搜索下一个可用日期并输出所需的日期?

【问题讨论】:

    标签: javascript php jquery calendar


    【解决方案1】:

    您可以使用is_selectablehttp://www.nogray.com/api/calendar/is_selectable.php方法来检查日期是否可选。 is_selectable 返回一个数组 [true|false, 'reason']。下面是一个简单的例子

    my_cal1 = new ng.Calendar({
        input: {date:'date1', month:'month1', year:'year1'},
        selected_date:new Date(),
        display_date:new Date(),
        dates_off:[{date:22, month:6}], // you were messing a ] here
        events: {
            onDateClick: function(dt){
                this.select_date(dt);
            },
            // code to check if the start date is selectable
            onLoad: function(){
                var st_dt = this.get_start_date().clone();
                while(!this.is_selectable(st_dt)[0]){
                    st_dt = st_dt.from_string('today + 1');
                }
                // checking if no dates are selected
                if (!ng.defined(this.get_selected_date())){
                    this.select_date(st_dt);
                }
                this.set_start_date(st_dt);
            }
        }
    });
    

    【讨论】:

    • 我已经尝试并测试了 22、23、24、25 和 26,月份为 6,7 月为 dates_off,但它仍然不会跳转到下一个可用日期。请问这怎么做?再次感谢您的宝贵时间。
    • 确保你有一个正确的日期数组(注意代码中的 cmets)。这是一个现场示例nogray.com/calendar_test.php
    • 谢谢@NoGray。那很完美。此外,要让第二个日历读取第一个选定日期,请添加 7 天 (+7) 并检查该日期是否未被阻止,如果是,则转到下一个可用日期,我将在哪里添加 +7 并检查下一个可用日期如果被阻止?通常,我会有 var myDate=new Date(); myDate.setDate(myDate.getDate()+7);但如果另一个日历上的开始日期今天不可用并且已移至下一个可用日期,则该方法将不起作用。这将如何完成?再次感谢。
    • 您可以在此处查看范围日历示例 nogray.com/example.php?ID=286 其中包含构建范围日历所需的一切。
    • 再次感谢您,但我无法在示例中找到答案。我在stackoverflow.com/questions/24956486/… 发布了另一个问题来说明这个问题。我确实希望您能提供帮助,因为在 StackOverflow 中使用它会帮助任何可能寻求相同帮助的人。感谢您的所有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多