2017-02-20 126 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日期它工作正常,但如果你試圖手動輸入,只要你鍵入一些事件觸發時,它計算錯誤的日期。

例如,如果該值#DateFrom01/01/2016和我手動更改爲'01/01/2015'當我刪除5的事件將當前日期作爲01/01/201並且它將計算updateDate爲01/01/202

用戶輸入完成後有什麼辦法觸發事件嗎?

預先感謝您。

+0

這是一個jQuery UI或引導日期選擇器? –

+0

@GilleQ。這是一個引導日期選擇器...我也添加了相應的標籤 – Kostis

回答

0

好吧,看來我解決它通過改變這些線路從

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

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

.focusout()事件似乎運作良好用戶是否選擇從日期選擇器或他種的日期它手動。

如果有人有更好的實施請發佈。