2017-02-20 124 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()事件似乎运作良好用户是否选择从日期选择器或他种的日期它手动。

如果有人有更好的实施请发布。