jQuery Datepicker的minDate和maxDate集没有年份问题

本·辛克莱尔

我有一个Jquery datepicker,可让您选择日期和月份。年份是隐藏的。

除添加minDate添加maxDate到datepicker设置外,其他所有功能均正常运行

我设置这个的原因是他们不能更改年份,我也希望它允许leap年。因此,我将最小日期和最大日期设置为2012年(最后一个leap年),以便他们可以选择2月29日。

当我单击日期文本框时,即使设置的日期为4月23日,它也会显示为12月31日。删除日期文本框后minDate,将maxDate删除选择4月23日。

这是一个错误还是有什么我可以纠正的方法?

我的代码:

$('#date').datepicker({
    altField: '#date_alt',
    altFormat: 'mm-dd',
    changeMonth: true,
    changeYear: false,
    dateFormat: 'MM d',
    showAnim: 'slideDown',
    yearRange: '-100:+0',
    minDate: new Date(2012, 1-1, 1),
    maxDate: new Date(2012, 12-1, 31),
    beforeShow: function(el, obj) {
       obj.dpDiv.addClass('datepicker_hideyear');
    },
    onClose: function(el, obj){
       setTimeout(function() { obj.dpDiv.removeClass('datepicker_hideyear'); }, 1000);
    }
});

更新:

将设置defaultDate为2012年的日期可以解决问题,但不能设置日期选择器的值。它仅加载2012年4月23日和默认日期。

defaultDate: new Date('04/23/2012'),

我必须使用setDate“选择” 2012年4月23日并将其设置为值,但最终得到的结果完全相同。

$('#date').datepicker('setDate', new Date('04/23/2012'));

JSFiddle

乔尔

问题是,当您将值添加到输入中时,您没有指定年份。在beforeShow中添加警报将显示您实际上正在2014年(alert($(this).datepicker("getDate"));。由于今年不在您的范围内,因此它默认为可能的最大日期。

从输入中删除值并添加默认日期将使其正常工作:

<input type="text" name="date" id="date" />

并在您的datepicker初始化中添加:

defaultDate: new Date(2012, 4-1, 23),

经过更多的挖掘之后,看来这是jQueryUI的错误。如果您未在dateformat字符串中指定年份格式,则无论如何它将默认为当前年份。这就是setdate失败的原因。

不过,这是一种解决方法:更新小提琴

这是我添加的

<div style="position:relative; display: inline-block;">
    <input type="text" id="date-placeholder" value="" />
    <input type="text" name="date" id="date" value="" style="visibility:hidden; position:absolute; left:0;" />
</div>

这基本上是创建一个占位符,用于向用户显示信息。“ #date”输入设置为“可见性”:隐藏并绝对位于占位符上方(以使datepicker弹出在应有的位置)。我没有设置display:none,因为日期选择器将无法工作,但是jquery仍然认为能见度:隐藏为可见,因此它仍然可以工作。

然后在javascript中,我设置了一个新事件:

$("#date-placeholder").click(function () {
    $("#date").datepicker("show");
});

当用户单击文本框时,这只是手动显示日期选择器。然后,在日期选择器的onclose事件中:

onClose: function (el, obj) {
            setTimeout(function () {
                obj.dpDiv.removeClass('datepicker_hideyear');
            }, 1000);
            var val = $("#date").val();
            val = val.substr(0, val.length - 4);
            $("#date-placeholder").val(val);
        }

只需获取日期字段的当前值,然后删除最后4个字符(年份),然后将占位符设置为该值即可。

您还必须在初始化时更改dateFormat字符串。这样一来,控件就需要一年才能正确设置。

dateFormat: 'MM d yy',

该代码可以修复,但是看看小提琴,您将看到它是如何工作的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery ui datepicker的动态minDate和maxDate

来自分类Dev

如何使用jQuery Datepicker动态应用setDate和(minDate和maxDate)Date Range?

来自分类Dev

jQuery UI Datepicker将一个月添加到minDate和maxDate

来自分类Dev

Struts2 jQuery Datepicker-通过maxDate和minDate设置过去的日期范围

来自分类Dev

Struts2 jQuery Datepicker-通过maxDate和minDate设置过去的日期范围

来自分类Dev

setDate 和 maxDate 组合 jQuery Datepicker

来自分类Dev

datepicker,minDate,maxDate + dateformat问题

来自分类Dev

jQuery datepicker年份范围

来自分类Dev

jQuery datepicker年份范围

来自分类Dev

比较numpy数组和没有年份的日期时间

来自分类Dev

Bootstrap 3 Datepicker-minDate和maxDate

来自分类Dev

为Datepicker控制设置Mindate和MaxDate

来自分类Dev

jQuery UI Datepicker-月份和年份下拉列表

来自分类Dev

jQuery datepicker限制可选年份

来自分类Dev

Syslog时间戳没有年份?

来自分类Dev

排序没有年份的日期

来自分类Dev

jQuery UI DatePicker没有样式

来自分类Dev

DatePicker输入minDate maxDate

来自分类Dev

DatePicker输入minDate maxDate

来自分类Dev

jQuery datepicker动态minDate发行价值

来自分类Dev

jQuery的datepicker删除问题

来自分类Dev

jQuery Datepicker altField问题

来自分类Dev

jQuery datepicker格式问题

来自分类Dev

jQuery的datepicker删除问题

来自分类Dev

jQuery Multiple Datepicker问题

来自分类Dev

jQuery UI Datepicker月份和年份组合在jQuery BlockUI(Popup)中不起作用

来自分类Dev

jQuery UI DatePicker:没有CSS,没有选择

来自分类Dev

jQuery Datepicker限制为另一个datepicker的月份和年份

来自分类Dev

Grails和Jquery Datepicker