Мне нужно сделать валидацию для двух дат: start_date и end_date, после того, как я напишу их на входах. Валидация работает нормально, но я хотел бы иметь возможность дать end_date значение null или 0. Когда я не пишу ничего во втором вводе, он все равно дает мне сообщение об ошибке из jQuery. Не могли бы вы мне помочь?
$.validator.addMethod("enddate", function(value, element) {
alert(value);
if (value != null) {
var startdatevalue = $(".startdate").val();
return Date.parse(startdatevalue) < Date.parse(value);
}
}, "End date must be greater than start date!");
И это мой html:
<tr>
<td>Start date</td>
<td><input type="text" id="startDate" name="startDate" class="startdate" value="<fmt:formatDate pattern="dd.MM.yyyy" value="${List.startDate}" />"/></td>
</tr>
<tr>
<td>End date</td>
<td><input type="text" id="endDate" name="endDate" class="enddate" value="<fmt:formatDate pattern="dd.MM.yyyy" value="${List.endDate}"/>"/></td>
</tr>
Я нашел способ проверить, что мне нужно, чтобы иметь start_date <= end_date - с jquery datepicker:
$(document).ready(function(){
$("#startDate").datepicker({
dateFormat: 'dd.mm.yy',
numberOfMonths: 1,
onSelect: function(selected) {
$("#endDate").datepicker("option","minDate", selected);
}
});
$("#endDate").datepicker({
dateFormat: 'dd.mm.yy',
numberOfMonths: 1,
onSelect: function(selected) {
$("#startDate").datepicker("option","maxDate", selected);
}
});
});
Я думал, что кто-то другой тоже сможет использовать этот ответ. Еще раз спасибо за ответы.
нужно возвращать некоторые данные, если оно равно нулю или 0
$.validator.addMethod("enddate", function(value, element) {
alert(value);
// Valid if null or 0
if (value == null || value == 0) {
return true;
}
// else compare dates
var startdatevalue = $(".startdate").val();
return Date.parse(startdatevalue) < Date.parse(value);
}, "End date must be greater than start date!");
Перед проверкой startdate меньше, чем enddate, убедитесь, что enddate имеет значение.