使用JavaScript隐藏某些日期的面板

时间:2015-03-12 14:39:35

标签: javascript asp.net asp.net-mvc knockout.js visual-studio-2013

您好我试图在前端隐藏一个面板(用作访问注册的按钮),它应该只在一年中的特定时间可见。我试图使用DateTime函数来获取当前日期,但它似乎对我不起作用 - 它说无法找到名称' DateTime'。任何建议表示赞赏。

这是我的代码

module PrestigeWorldWide.Scripts.ViewModels {
export class IndexViewModel extends BaseViewModels.BaseViewModel {
    public panels: KnockoutObservableArray<IPanelObject> = ko.observableArray<IPanelObject>();
    public events: KnockoutObservableArray<FullCalendar.EventObject> = ko.observableArray<any>();

    constructor() {
        super();


        this.panels.push({
            Name: "My Transcript",
            Desc: "View your unofficial QUB transcript",
            Icon: "fa-file-text",
            Link: "/PrestigeWorldwide/Grade/ViewTranscript"
        });

        this.panels.push({
            Name: "Module Info",
            Desc: "View the information on all modules including pre-requisites and course content",
            Icon: "fa-folder-open",
            Link: "/PrestigeWorldwide/Module/ModuleInfo"
        });
        var cutOffStart1 = "14/09/2015";
        var cutOffEnd1 = "12/10/2015";
        var cutOffStart2 = "18/01/2016";
        var cutOffEnd2 = "15/02/2016";

        if (DateTime.Now >= cutOffStart1 && DateTime.Now >= cutOffEnd1) {
            this.panels.push({
                Name: "Enrollment Wizard",
                Desc: "Enroll for modules and enter further information about yourself - emergency contacts etc.",
                Icon: "fa-magic",
                Link: "/PrestigeWorldwide/Registration/Index"
            });
        }
        this.getEvents();
    }

    getEvents() {
        var url = "/PrestigeWorldwide/Class/GetStudentClasses";
        this.loading(true);
        $.ajax(url).done((events: FullCalendar.EventObject[]) => {
            this.loading(false);
            _.each(events, (event) => {
                this.events.push(event);
            });
        });
    }


}

export interface IPanelObject {
    Name: string;
    Desc: string;
    Icon: string;
    Link?: string;
  }
}

Error message

更新 - 我已经进入了以下阶段:(有没有简单的方法可以在不使用Moments.js的情况下更改日期格式?对于这么小的一段代码来说,这看起来有点过头了?)

//Before displaying the Registration wizard panel, check if we are in the range of registration availability dates
        var cutOffStart1 = new Date(2015,09,14);
        var cutOffEnd1 = new Date(2015, 10, 12);
        var cutOffStart2 = new Date(2015,3,11);
        var cutOffEnd2 = new Date(2015,3,15);
        //var cutOffStart2 = new Date(2016,1,18);
        //var cutOffEnd2 = new Date(2016,2,15);
        var today = new Date();
        var dd = today.getDate();
        var mm = today.getMonth() + 1; //January is 0!
        var yyyy = today.getFullYear();
        //check if the current date is in the fisrt semseter registration period
        if (today >= cutOffStart1 && today >= cutOffEnd1) {
            this.panels.push({
                Name: "Enrollment Wizard",
                Desc: "Enroll for modules and enter further information about yourself - emergency contacts etc.",
                Icon: "fa-magic",
                Link: "/PrestigeWorldwide/Registration/Index"
            });
        }
        //check if the current date is in the second semseter registration period
        else if (today >= cutOffStart2 && today >= cutOffEnd2) {
            this.panels.push({
                Name: "Enrollment Wizard",
                Desc: "Enroll for modules and enter further information about yourself - emergency contacts etc.",
                Icon: "fa-magic",
                Link: "/PrestigeWorldwide/Registration/Index"
            });
        }
        else { };

1 个答案:

答案 0 :(得分:2)

DateTime.Now是c#,您在JavaScript文件中。

你需要做这样的事情:

var now = new Date();

另外值得注意的是,您与截止日期相比较的值是字符串,您还需要将这些值转换为日期。

有几个js库来操作日期,Moment.js是一个。