手动JQuery onChangeDate事件更改日期

时间:2017-02-20 08:54:49

标签: jquery datepicker bootstrap-datepicker

我的页面中有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); 
  }
});

如果您从datepicker选择日期,它可以正常工作,但如果您尝试手动输入日期,则只要您输入内容并且计算错误的日期,事件就会触发。

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

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

提前谢谢。

1 个答案:

答案 0 :(得分:0)

好的,似乎我通过改变

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

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

.focusout()事件似乎在用户从datepicker中选择日期或手动输入日期时效果很好。

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

相关问题