2017-02-20 2 views
1

У меня есть 2 datepickers на моей странице, и я хочу иметь 1 год между ними. До сих пор, когда один из них менялся, я проверяю одно значение другого и обновляю его.JQuery onChangeDate дата изменения события вручную

$("#DateFrom").datepicker().on("changeDate", function() { 
    var dt = new Date($(this).val()); 
    dt.setFullYear(dt.getFullYear() + 1) 
    var updateDate = new Date(dt); 

    var dateFrom =$(this).val(); 
    var dateTo = $("#DateTo").val(); 

    if (new Date(dateFrom).getTime() > new Date(dateTo).getTime()) 
     $('#DateTo').val(''); 

    if (new Date(dateTo).getTime() > new Date(updateDate).getTime()) 
     $('#DateTo').datepicker('setDate', updateDate); 
}); 


$("#DateTo").datepicker().on("changeDate", function (e) { 
    var dt = new Date($(this).val()); 
    dt.setFullYear(dt.getFullYear() - 1) 
    var updateDate = new Date(dt); 

    var dateTo = $(this).val(); 
    var dateFrom = $("#DateFrom").val(); 

    if (new Date(dateFrom).getTime() > new Date(dateTo).getTime()) { 
     $('#DateFrom').val(''); 
    } 

    if (new Date(dateFrom).getTime() < new Date(updateDate).getTime()) { 
     $('#DateFrom').datepicker('setDate', updateDate); 
    } 
}); 

Он отлично работает, если вы выбираете дату из datepicker, но если вы пытаетесь ввести его вручную огни событий всякий раз, когда вы печатаете что-то и он вычисляет неправильную дату.

Например, если #DateFrom значения является 01/01/2016 и я изменить его вручную '01/01/2015', когда я удалить 5 будет проходить мероприятие текущую дату как 01/01/201 и рассчитает updateDate в 01/01/202.

Есть ли способ вызвать событие после того, как пользователь завершит ввод?

Заранее спасибо.

+0

Является ли это пользовательским интерфейсом jquery или загрузчиком даты? –

+0

@ GilleQ. это bootstrap-datepicker ... Я добавил соответствующий тег и – Kostis

ответ

0

Хорошо, кажется, что я решил, изменив эти строки из

$("#DateFrom").focusout(function() 
$("#DateTo").focusout(function() 

в

$("#DateFrom").focusout(function() 
$("#DateTo").focusout(function() 

.focusout() событие, кажется, работает хорошо, выбирает ли пользователь дату от DatePicker или он типов это вручную.

Если кто-то имеет лучшую реализацию, отправьте его.

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