我正在尝试在同一页面上实现几个jQuery日期选择器,区别在于其中一个将使用jQuery UI DatePicker to show month year only处建议的解决方案作为月份选择器(或... {{3 }})
关键在于,如果我将以下CSS代码添加到我的CSS文件中,该文件隐藏了选择日期的能力......那么这两个日历隐藏了选择日期的能力,而不仅仅是我需要的日期......似乎它是一种全有或全无的方法
.ui-datepicker-calendar {
display: none;
}
有没有办法可以区分普通日期选择器和我创建的自定义月份选择器(基于jQuery日期选择器)?
这是我的HTML ..
<input type="text" size="12" name="codeFlowDate" id="MyDate" class="text" />
<input type="text" size="12" name="codeFlowDate" id="MyMonth" class="text" />
这是JS
$(function() {
$('#MyDate').datepicker({
showOn: "button",
buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
buttonImageOnly: true,
//showButtonPanel: true,
maxDate: +0,
});
});
$(function() {
$('#MyMonth').datepicker({
showOn: "button",
buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
buttonImageOnly: true,
maxDate: +0,
dateFormat: "mm/yy",
changeMonth: true,
changeYear: true,
showButtonPanel: true,
onClose: function(dateText, inst) {
function isDonePressed() {
return ($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1);
}
if (isDonePressed()) {
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)).trigger('change');
$('.date-picker').focusout() //Added to remove focus from datepicker input box on selecting date
}
},
beforeShow: function(input, inst) {
inst.dpDiv.addClass('month_year_datepicker')
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(datestr.length - 4, datestr.length);
month = datestr.substring(0, 2);
$(this).datepicker('option', 'defaultDate', new Date(year, month - 1, 1));
$(this).datepicker('setDate', new Date(year, month - 1, 1));
$(".ui-datepicker-calendar").hide();
}
}
})
});
谢谢!
EDIT 看到回复后......
我已经在我的代码中添加了这样的内容,但根本没有任何事情发生......
$(function() {
$('#MyMonth').datepicker({
showOn: "button",
buttonImage: "http://jqueryui.com/resources/demos/datepicker/images/calendar.gif",
buttonImageOnly: true,
maxDate: +0,
dateFormat: "mm/yy",
changeMonth: true,
changeYear: true,
showButtonPanel: true,
onClose: function(dateText, inst) {
function isDonePressed() {
return ($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1);
}
if (isDonePressed()) {
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)).trigger('change');
$('.date-picker').focusout() //Added to remove focus from datepicker input box on selecting date
}
},
beforeShow: function(input, inst) {
$('.ui-datepicker-calendar').removeClass();
}
})
我注意到.ui-datepicker-calendar在HTML中定义如下..
table class = ui-datepicker-calendar
答案 0 :(得分:0)
使用选择器#id .datepickerClass不会起作用,因为在输入之外创建了datepicker div。 您必须使用beforeShow将类设置为日历div:
$('input').datepicker({
beforeShow: function(input, inst) {
$('#ui-datepicker-div').removeClass(function() {
return $('input').get(0).id;
});
$('#ui-datepicker-div').addClass(this.id);
}
});
查看此post