JQuery datepicker,仅在输入数月

时间:2014-05-11 10:35:47

标签: javascript jquery jquery-ui calendar datepicker

我有一个问题,非常类似于year/month only datepicker inline的问题
不同之处在于我使用的是input版本,而不是divdiv情况下,ui-datepicker-calendar位于外部div中,因此可以唯一访问 但是对于input,输入和ui-datepicker-calendar之间没有任何关系(或者,我找不到......) 为了清楚起见,我不能使用" global" .ui-datepicker-calendar { 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();
};

这一切看起来都很好,但是当年/月改变时,新日期会填入输入(所需),但现在显示日历(不需要)。

有关如何解决此问题的任何想法?...

提前致谢。

JSfiddle:http://jsfiddle.net/OhadRaz/8z9M2/

3 个答案:

答案 0 :(得分:0)

我认为您仍然可以使用the solution中的css进行链接但仅定位一个日期选择器

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

答案 1 :(得分:0)

您可以将代码放在JSFiddle上,以便我们可以看到它在做什么吗?我可能已经在Jquery Datepicket Supress Year做了一些熟悉的事情,但没有JSFiddle演示就无法分辨......

答案 2 :(得分:0)

行,
我提出了某种解决方案:

var superUpdateDatepicker = $.datepicker._updateDatepicker;

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

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

    return ret;
}

在工作的时候,我对它不满意 这太糟糕了,它不干净,我只是不喜欢它。

有更好的想法吗?...