我的页面上有两个jQuery日期选择器:
特殊的人使用一些自定义CSS(from here)来隐藏日历部分,因此只显示月份/年。
.ui-datepicker-calendar {
display : none ;
}
但是,由于页面上只有一个对话框实例,因此两个选择器都隐藏了日历。
有没有办法只将此样式应用于其中一个实例?我检查了文档,看看是否可以在对话框中添加自定义类,但我找不到它。
答案 0 :(得分:4)
我正在解决同样的问题。上面的答案不起作用。此评论中提供的解决方案的工作原理是什么:http://www.filamentgroup.com/lab/using_multiple_jquery_ui_themes_on_a_single_page/#commentNumber16
我修改了一下,这就是我得到的:
$('#startDate').datepicker( {
beforeShow: function(input, inst) {
var newclass = 'calendar-base hideDates';
var p = inst.dpDiv.parent();
if (!p.hasClass('calendar-base'))
inst.dpDiv.wrap('<div class="'+newclass+'"></div>');
else
p.removeClass('showDates').addClass('hideDates');
}
});
$('#birthDate').datepicker( {
beforeShow: function(input, inst) {
var newclass = 'calendar-base showDates';
var p = inst.dpDiv.parent();
if (!p.hasClass('calendar-base')){
inst.dpDiv.wrap('<div class="'+newclass+'"></div>');
else
p.removeClass('hideDates').addClass('showDates');
}
});
我已经检查了它并且有效。
答案 1 :(得分:0)
对于每个输入,您可以在beforeShow事件中手动更改css。代码如下所示:
$("#regularInput").datepicker({
beforeShow: function(input, inst) {
$(".ui-datepicker-calendar").show();
}
});
$("#specialInput").datepicker({
beforeShow: function(input, inst) {
$(".ui-datepicker-calendar").hide();
}
});
我没有测试过那段代码,但是你应该得到这个代码。希望有所帮助!
答案 2 :(得分:0)
我建议您不要使用CSS,而应该关注https://stackoverflow.com/a/6013093 ,以便在为“特殊”日期选择器触发焦点事件时隐藏日历来创建相同的效果。< / p>
如果您已开始使用CSS,则可以将日期选择器附加到div元素而不是输入元素。这样每个.ui-datepicker-calendar都在它自己的div中,你可以应用不同的样式。缺点是您有div而不是输入,它们在您加载页面时立即显示,并且没有onClose事件。这是使它工作的最低限度代码。
HTML:
<div id="startDate" class="date-picker" />
<div id = "special-datepicker" class = "date-picker" </div>
使用Javascript:
$(function() {
$('.date-picker').datepicker( {});
});
CSS:
#special-datepicker .ui-datepicker-calendar {
display: none;
}