Javascript JQuery datepicker,仅在输入时为月-年

Javascript JQuery datepicker,仅在输入时为月-年,javascript,jquery,jquery-ui,calendar,datepicker,Javascript,Jquery,Jquery Ui,Calendar,Datepicker,我有一个问题,非常类似于: 区别在于我使用的是输入版本,而不是div。 在div中,ui日期选择器日历位于外部div中,因此可以唯一地访问。 但是对于输入,输入和ui datepicker日历之间没有关系,或者,我没有发现。。。 需要明确的是,我不能使用global.ui日期选择器日历{display:none;},因为我有其他日期选择器,它是一个完整的日历,也就是说,也使用日期。 我的代码如下所示: $("#monthsYearInput").datepicker({ changeMo

我有一个问题,非常类似于: 区别在于我使用的是输入版本,而不是div。 在div中,ui日期选择器日历位于外部div中,因此可以唯一地访问。 但是对于输入,输入和ui datepicker日历之间没有关系,或者,我没有发现。。。 需要明确的是,我不能使用global.ui日期选择器日历{display:none;},因为我有其他日期选择器,它是一个完整的日历,也就是说,也使用日期。 我的代码如下所示:

$("#monthsYearInput").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "mm/yy",

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

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

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

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

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

    onChangeMonthYear: function(year, month) {
      if (changingDate) {
        return;
      }

      changingDate = true;
      $(this).datepicker("setDate", new Date(year, month - 1, 1));
      $(this).datepicker("refresh");
      changingDate = false;
    }
  });

$("#monthsYearInput").focus(function () {
    $(".ui-datepicker-calendar").hide();
};

$("#monthsYearInput").blur(function () {
    $(".ui-datepicker-calendar").hide();
};
开始时看起来一切正常,但当年/月发生变化时,新日期将填充到所需的输入中,但现在日历显示not desired

关于如何解决这个问题有什么想法吗

提前谢谢


JSfiddle:

我认为,您仍然可以使用类似于您链接的css,但只针对一个日期选择器

#monthsYearInput .ui-datepicker-calendar { display: none;}

你能把你的代码放到JSFIDLE上让我们看看它在做什么吗?我可能在做了一些熟悉的事情,但如果没有JSFIDLE演示,我就说不出来了…

好的, 我想出了某种解决办法:

var superUpdateDatepicker = $.datepicker._updateDatepicker;

$.datepicker._updateDatepicker = function(inst) {
    var ret = superUpdateDatepicker.apply(this, arguments);

    if (inst.id == "monthsYearInput") {
      $(".ui-datepicker-calendar").hide();
    }

    return ret;
}
工作的时候,我对它不满意。 它太粗糙,不干净,我就是不喜欢它


有更好的主意吗?…

如果没有向提供日期值,则默认情况下将其设置为1。谢谢。但它与所描述的问题有什么关系?…没什么,这是对代码的注释,不是答案。这就是为什么它是一个评论-