2014-10-23 2 views
0

Как я могу изменить этот код, чтобы принимать даты mm/dd/yyyy и mm/yyyy? У нас есть одна страница в нашем приложении, где требования - это даты в формате mm/yyyy, а остальные - mm/dd/yyyy.Подтвердить дату в формате ММ/ГГГГ в momentjs

Даты 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." } }); 

EDIT:

я добавил отдельный метод проверки и попробовал это, и это до сих пор не работает. Есть идеи?

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

Это больше похоже на 'momentjs' вопрос, чем вопрос нокаута –

+0

Или проверка ко –

+0

Я думаю, что вы, возможно, потребуется создать два различных правила проверки kò для различных форматов, а затем использовать эти форматы в качестве 2-го параметра в вызове к моменту –

ответ

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" 
}; 
+0

Хотя это работает, это не поможет пользовательскому интерфейсу показать, что действительно приемлемо для каждого поля, и, учитывая, что они разные на одной странице, я, вероятно, хочу показать приемлемый формат как часть сообщения. –

+0

Это сообщение переопределено для чего-то, что в любом случае не связано с ожидаемыми форматами. Для общего решения я бы подошел к этому по-другому, но для этого случая дополнительные сложности были бы лишними. –

Смежные вопросы