0

这是我的代码

1.单击日期选择器并更改月份或年份。

2.现在输入字段修改。

3.关闭日期选择器并再次单击日期选择器中未设置的日期选择器修改值。

请帮助解决这个问题。

$( "#monthYearOnly" ).datepicker({
  buttonImage: "../images/calendar.png",
  buttonImageOnly: true,
  changeMonth: true,
  changeYear: true,
  showOn: "both",
  dateFormat: 'yy/mm',
  maxDate : '0d',
  defaultDate: '1d',
  constrainInput: false,
  buttonText: 'Click to show the month',
  onClose: function(dateText, inst) {
    var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
    var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
    $(this).datepicker('setDate', new Date(year, month, 1));
  }
});

$("#monthYearOnly").focus(function (year, month, inst) {
  var test = $("#monthYearOnly").val();
  $(".ui-datepicker-calendar").hide();
  $("#ui-datepicker-div").position({
    my: "center top",
    at: "center bottom",
    of: $(this)
  });
});
});

我在单个 jsp 页面中使用三个三个日期选择器

两个带日历的日期选择器和另一个不带日历的日期选择器(只有月份和年份)

4

1 回答 1

0

你可以介绍一个beforeShow
您的日期选择器可能如下所示:

$("#monthYearOnly").datepicker({
    buttonImage: "../images/calendar.png",
    buttonImageOnly: true,
    changeMonth: true,
    changeYear: true,
    showOn: "both",
    dateFormat: 'yy/mm',
    maxDate: '0d',
    defaultDate: '1d',
    constrainInput: false,
    buttonText: 'Click to show the month',

    onClose: function (dateText, inst) {
        var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
        var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();

        $(this).datepicker('setDate', new Date(year, month, 1));
    },

    beforeShow: function() {
      var dateText = $(this).val();
      var isPopulated = dateText.length > 0;

      if (isPopulated) {
        var selectedDate = $.datepicker.parseDate("yy/mm/dd", dateText + "/01");

        $(this).datepicker("option", "defaultDate", selectedDate);
        $(this).datepicker("setDate", selectedDate);
        $(this).datepicker("refresh");
      }
    },

});

我相信这会让你得到你想要达到的目标。

于 2014-05-10T21:30:44.527 回答