Я согласен с использованием moment.js
. Однако, если вы по какой-то причине не хотите или не можете, вот решение для вашей скрипки.
http://jsfiddle.net/jonofan/YdeY8/483/
$('.datepicker').on('change', function() {
var fromParts = $('#CheckInDate').val().split('-');
var toParts = $('#CheckOutDate').val().split('-');
//please put attention to the month (parts[0]), Javascript counts months from 0:
// January - 0, February - 1, etc
var fromDate = new Date(fromParts[2],fromParts[0]-1,fromParts[1]);
var toDate = new Date(toParts[2],toParts[0]-1,toParts[1]);
if (fromDate >= toDate) {
alert('Check in must be before check out!')
}
})
Причина вы должны разделить ваши даты в части потому, что Java-объект Date()
только разбирает конкретные форматы, и вы не можете пользовательские форматы. Вот почему приятно использовать библиотеку, например, moment.js
, так как она будет обрабатывать все очень гибко.
Исходя из опыта, использование разделения строк для синтаксических дат становится проблематичным в том случае, если вы хотите изменить формат даты. Скачайте через 6 месяцев, вы хотите изменить даты с dd-mm-yy
по dd/mm/yy
; вам нужно будет перейти и обновить код разделения строк.
Спасибо за ответ. Есть ли способ поставить функции checkInDate.datepicker и checkOutDate.datepicker внутри функции .datepicker. Потому что мне нужно получить доступ к полям управления через имя класса, а не через имя элемента управления. – Ammu
@Ammu, вы можете, конечно, получить к ним доступ через '$ ('. Datepicker')', но вам нужно знать, в чём находится чек, и что происходит. Для этого я думаю, что вам, вероятно, все еще нужны идентификаторы. Оцените, можете ли вы «отметить как ответ», если это было полезно. – jonofan