Вы пытаетесь сравнить входные значения непосредственно в вашем условии. Эти значения являются строками, и они сравниваются как строка лексографическая . Чтобы сравнить значения как даты, вам нужно просто создать новый объект даты из входного значения String и сравнить его:
if(new Date($('#start_date').val()) > new Date($('#end_date').val())) {
alert('End has to be after start');
}
Чтобы сделать еще один шаг, вы можете сбросить значение входов на null
если условие возвращает true
, таким образом, ваш ввод не имеет значения, а поскольку он имеет атрибут required
, дополнительная проверка в вашем отправлении становится избыточной и может быть удалена.
if(new Date($('#start_date').val()) > new Date($('#end_date').val())) {
alert('End has to be after start');
$(this).val(null);
}
Боковое примечание:
Я бы предпочел использовать событие change
вместо события keyup
, чтобы проверить ваш ввод. У вас есть много небезопасных запусков и, вероятно, даже ошибок, когда вы используете событие keyup
и проверяете перед вводом действительной строки даты.