我今天早些时候在SOF上找到了一段代码。
$("input[name=startDate], input[name=endDate]").datepicker({
minDate: new Date("2008-09-01"),
maxDate: "+5Y",
changeMonth: true,
changeYear: true,
showButtonPanel: false,
dateFormat: 'mm.yy',
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(input, inst) {
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(datestr.length-4, datestr.length);
month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', 'monthNames'));
$(this).datepicker('option', 'defaultDate', new Date(year, month));
$(this).datepicker('setDate', new Date(year, month, 1));
}
}
});
正如您所看到的,我想在2个不同的输入上使用它们,以便能够在2个给定的月份和2个之间进行搜索。年。
第二次点击相同输入时出现问题;
直到达到 minDate 值( 2008 )为止。
如果你能帮我解决这个问题,我将非常高兴。
答案 0 :(得分:2)
罪魁祸首是month
内beforeShow
的分配。它试图从datepicker获取可读月份名称,例如“七月”。但它真正想要的只是代表月份的数字。所以,只需将该行更改为:
var month = datestr.substring(0, datestr.length-5) - 1;
请参阅此处的演示:http://jsfiddle.net/william/GyP2u/。