如何更改此代码以接受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." } });
第二次编辑:
显示的必需验证消息 请输入活动日期。 请输入诉讼日期。
答案 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"
};