JQuery onChangeDate 事件手动更改日期

JQuery onChangeDate event change date manually

我的页面中有 2 个 datepickers,我希望它们之间有 1 年的范围。 到目前为止,每当其中一个发生变化时,我都会检查另一个的值并相应地更新它。

$("#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); 
  }
});

如果您 select 来自 datepicker 的日期,它工作正常,但如果您尝试手动输入它,则每当您输入内容时事件都会触发,并且它会计算出错误的日期。

例如,如果 #DateFrom 的值为 01/01/2016 并且我在删除 5 时将其手动更改为 '01/01/2015',则事件会将当前日期设为 01/01/201 并且它会将更新日期计算为 01/01/202.

有没有办法在用户完成输入后触发事件?

提前致谢。

好的,看来我是通过从

更改这些行来解决它的
$("#DateFrom").focusout(function () 
$("#DateTo").focusout(function () 

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

无论用户是从日期选择器中选择日期还是手动输入日期,.focusout() 事件似乎都能正常工作。

如果谁有更好的实现请post它。