如何在 jquery ui select 输入中设置日期

How to set date in jquery ui select inputs

大家晚上好,我创建了一个 JQuery Ui 年月日的日期选择器,代码如下:

  $.datepicker.setDefaults($.datepicker.regional["pt-BR"]);
  $(datePickerId).datepicker({
    changeMonth: true,
    changeYear: true,
    showButtonPanel:true,
    maxDate: "+3m",
    minDate: "-2y",
    onClose: function(dateText, inst) {
      $(this).prop('disabled', true);
      let month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
      let year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
      let givenDate = new Date(year, month, 1);
      $(this).datepicker('setDate', givenDate);
      //Do something with AJAX
    }
  });
  $(datePickerId).datepicker("setDate", "0")

我的问题是,当用户将 select 日期输入是这样的:

这张图片就是一个完美的例子,在这种情况下,用户 select 编辑了 8 月份,但是一旦他再次点击日期选择器,日期选择器就会选择设置的默认日期当它第一次运行时(今天 month/year),当用户 select 是一个新的 month/year 我怎么能让代码“记住”selected在 onClose 方法中然后正确带上它?非常感谢您。

编辑以完整描述我实际想要做的事情:用户打开日历,它以实际的月份和年份开始,用户选择 July/2019,点击确定,AJAX 请求完成到服务器选择给定月份的一些信息,用户再次单击日期选择器,日历显示,当发生这种情况时,月份和年份的输入(参见图像以供参考)应该在 July/2019(最后一个 month/year 用户选择)。

考虑以下示例。

$(function() {
  $("#myDate").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "MM yy",
    showButtonPanel: true,
    maxDate: "+3m",
    minDate: "-2y",
    onClose: function(dateText, inst) {
      $(this).prop('disabled', true);
      var m = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
      m = parseInt(m) + 1;
      m = (m < 10 ? "0" + m : m);
      var y = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
      var dt = new Date(y + "-" + m + "-01T00:00:01");
      $(this).datepicker( "option", "defaultDate", dt ).datepicker("setDate", dt);
      //Do something with AJAX
      $(this).prop('disabled', false);
    }
  }).datepicker("setDate", "0");
});
.ui-datepicker .ui-datepicker-calendar,
.ui-datepicker .ui-datepicker-buttonpane .ui-datepicker-current {
  display: none;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
Date: <input type="text" id="myDate" />

除了 setDate 您还必须重置 defaultDate