我想使用joi验证时间字段

问题描述

我输入了日期和时间输入字段。 我使用joi库进行输入验证是,日期和时间不能分别为null。 我在应用日期验证方面很成功,但是无法应用时间验证。 我如何实现时间验证。

这是我用于日期和时间输入字段的html文件代码

html += '<td><input type="text" id="tier3City'+cnt+'"  readonly="readonly" name="tier3City" 
class="form-control" /></td>';
html += '<td><input type="date" id="fromDate'+cnt+'" name="fromDate" class="form-control" /></td>';
html += '<td><input type="time" id="fromTime'+cnt+'" name="fromTime" class="form-control" /></td>';
html += '<td><input type="date" id="toDate'+cnt+'" name="toDate" class="form-control" /></td>';
html += '<td><input type="time" id="toTime'+cnt+'" name="toTime" class="form-control" /></td>';

这是我的ejs文件代码

  else if(stayOption == 'Stay')
  {
      schema=joi.object({
      stayOption:joi.string().required().label('Please Choose Stay Option'),projectTask:joi.string().required().label('Please select Activity Code.'),placejourney: joi.string().required().label('Please select Place of journey.'),fromDated:joi.date().required().label('Please select FROM(Departure Time from Residence)'),fromDat:joi.date().max('Now').required().label('Please select FROM(Departure Time from Residence) less than or equals to Today'),fromTimes:joi.time().required().label('Please select FROM(Departure Time from Residence) Time'),toDated:joi.date().required().label('Please select TO(Arrival Time to Residence)'),toDate:joi.date().max('Now').required().label('TO(Arrival Time to Residence must be less than or equals to Today'),fromDate:joi.date().required().less(joi.ref('toDate')).label('From(Departure Time from Residence) must be less than To (Arrival Time to Residence)'),toTimes:joi.time().required().label('Please select TO (Arrival Time to Residence)Time'),actualAMTForBL:joi.number().required().label('Please enter Actual Boarding lodging Amount'),imgpath:joi.string().invalid('demo').label('Please Upload File/Attachments').required(),})
  result=schema.validate({stayOption:stayOption,projectTask:projectTask,placejourney:placejourney,fromDated:fromDate,fromDat:fromDate,toDated:toDate,fromDate:fromDate,fromTimes:fromTime,toDate:toDate,toTimes:toTime,actualAMTForBL:actualAMTForBL,imgpath:imgpath});

解决方法

您必须使用RegEx验证时间(而不是Joi.time())来验证时间(Joi.string()。regex())。

您的问题的解决方案是here