在momentjs中以MM / YYYY格式验证日期

时间:2014-10-23 15:12:39

标签: knockout.js momentjs

如何更改此代码以接受mm / dd / yyyy和mm / yyyy日期?我们的应用程序中有一个页面,其中要求的日期为mm / yyyy格式,其余为mm / dd / yyyy。

mm / yyyy日期验证失败。

ko.validation.rules["simpleDate"] = {
    validator: (val: any, validate: any) => {
        if (val == null) return true;

        return moment(val).isValid();
    },
    message: "Invalid date"
};





eventDate: KnockoutObservable<Date> = ko.observable(null).extend({ required: { message: "Please enter an event date." }, simpleDate: { message: "Please enter a valid event date." } });
lawsuitDate: KnockoutObservable<Date> = ko.observable(null).extend({ required: { message: "Please enter a lawsuit date." }, simpleDate: { message: "Please enter a valid lawsuit date." } });

编辑:

我添加了一个单独的验证方法并尝试了这个并且它仍然无效。有什么想法吗?

ko.validation.rules["simpleDate2"] = {
    validator: (val: any, validate: any) => {
        if (val == null) return true;

        return moment(val,'MM/YYYY').isValid();
    },
    message: "Invalid date"
};

        eventDate: KnockoutObservable<Date> = ko.observable(null).extend({ required: { message: "Please enter an event date." }, simpleDate2: { message: "Please enter a valid event date." } });
        lawsuitDate: KnockoutObservable<Date> = ko.observable(null).extend({ required: { message: "Please enter a lawsuit date." }, simpleDate2: { message: "Please enter a valid lawsuit date." } });

第二次编辑:

显示的必需验证消息 请输入活动日期。 请输入诉讼日期。

1 个答案:

答案 0 :(得分:0)

Moment接受一个格式数组,预期字符串将被解析(String + Formats)。更改验证器以使用它。您还需要启用严格的解析,因此它必须匹配其中一种格式。

ko.validation.rules["simpleDate"] = {
    validator: (val: any, validate: any) => {
        if (val == null) return true;

        return moment(val, ['MM/DD/YYYY', 'MM/YYYY'], true).isValid();
    },
    message: "Invalid date"
};