多个jQuery UI日期选择器具有不同的样式

时间:2010-07-22 16:48:44

标签: javascript jquery jquery-ui

我的页面上有两个jQuery日期选择器:

  • 常规
  • 一个只能选择年/月的“特殊”。

特殊的人使用一些自定义CSS(from here)来隐藏日历部分,因此只显示月份/年。

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

但是,由于页面上只有一个对话框实例,因此两个选择器都隐藏了日历。

有没有办法只将此样式应用于其中一个实例?我检查了文档,看看是否可以在对话框中添加自定义类,但我找不到它。

3 个答案:

答案 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;
    }