JQuery DatePicker,如何突出显示当前输入的日期?

Posted

技术标签:

【中文标题】JQuery DatePicker,如何突出显示当前输入的日期?【英文标题】:JQuery DatePicker, how to highlight current input value date? 【发布时间】:2010-10-02 02:22:48 【问题描述】:

我正在为 jquery 使用 datepicker 控件,一切都很好,只是我无法让它突出显示当前选择的输入值(或当前日期)。即使我的文本输入中有有效的日期值并且可以让日期选择器返回正确的月份/年份,我也无法让它在日历上突出显示该日期。

这是我的代码:

$('.date_picker').datepicker( dateFormat: 'dd/mm/yy', duration: '', gotoCurrent: true, defaultDate: -1);

..这是样式表:

/*datepicker*/
/* Main Style Sheet for jQuery UI date picker */
.ui-datepicker-div, .ui-datepicker-inline, #ui-datepicker-div 
    /*resets*/margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none;
    font-family: Verdana, Arial, sans-serif;
    background: #ffffff url(images/ffffff_40x100_textures_01_flat_0.png) 0 0 repeat-x;
    font-size: 0.80em;
    border: 4px solid #dddddd;
    width: 15.5em;
    padding: 2.5em .5em .5em .5em;
    position: relative;

.ui-datepicker-div, #ui-datepicker-div 
    z-index: 9999; /*must have*/
    display: none;

.ui-datepicker-inline 
    float: left;
    display: block;

.ui-datepicker-control 
    display: none;

.ui-datepicker-current 
    display: none;

.ui-datepicker-next, .ui-datepicker-prev 
    position: absolute;
    left: .5em;
    top: .5em;
    background: #e6e6e6 url(images/e6e6e6_40x100_textures_02_glass_75.png) 0 50% repeat-x;

.ui-datepicker-next 
    left: 14.6em;

.ui-datepicker-next:hover, .ui-datepicker-prev:hover 
    background: #dadada url(images/dadada_40x100_textures_02_glass_75.png) 0 50% repeat-x;

.ui-datepicker-next a, .ui-datepicker-prev a 
    text-indent: -999999px;
    width: 1.3em;
    height: 1.4em;
    display: block;
    font-size: 1em;
    background: url(images/888888_7x7_arrow_left.gif) 50% 50% no-repeat;
    border: 1px solid #d3d3d3;
    cursor: pointer;

.ui-datepicker-next a 
    background: url(images/888888_7x7_arrow_right.gif) 50% 50% no-repeat;

.ui-datepicker-prev a:hover 
    background: url(images/454545_7x7_arrow_left.gif) 50% 50% no-repeat;

.ui-datepicker-next a:hover 
    background: url(images/454545_7x7_arrow_right.gif) 50% 50% no-repeat;

.ui-datepicker-prev a:active 
    background: url(images/222222_7x7_arrow_left.gif) 50% 50% no-repeat;

.ui-datepicker-next a:active 
    background: url(images/222222_7x7_arrow_right.gif) 50% 50% no-repeat;

.ui-datepicker-header select 
    border: 1px solid #d3d3d3;
    color: #555555;
    background: #e6e6e6;
    font-size: 1em;
    line-height: 1.4em;
    position: absolute;
    top: .5em;
    margin: 0 !important;

.ui-datepicker-header option:focus, .ui-datepicker-header option:hover 
    background: #dadada;

.ui-datepicker-header select.ui-datepicker-new-month 
    width: 7em;
    left: 2.2em;

.ui-datepicker-header select.ui-datepicker-new-year 
    width: 5em;
    left: 9.4em;

table.ui-datepicker 
    width: 15.5em;
    text-align: right;

table.ui-datepicker td a 
    padding: .1em .3em .1em 0;
    display: block;
    color: #555555;
    background: #e6e6e6 url(images/e6e6e6_40x100_textures_02_glass_75.png) 0 50% repeat-x;
    cursor: pointer;
    border: 1px solid #ffffff;

table.ui-datepicker td a:hover 
    border: 1px solid #999999;
    color: #212121;
    background: #dadada url(images/dadada_40x100_textures_02_glass_75.png) 0 50% repeat-x;

table.ui-datepicker td a:active 
    border: 1px solid #dddddd;
    color: #222222;
    background: #ffffff url(images/ffffff_40x100_textures_02_glass_65.png) 0 50% repeat-x;

table.ui-datepicker .ui-datepicker-title-row td 
    padding: .3em 0;
    text-align: center;
    font-size: .9em;
    color: #222222;
    text-transform: uppercase;

table.ui-datepicker .ui-datepicker-title-row td a 
    color: #222222;

.ui-datepicker-cover 
    display: none;
    display/**/: block;
    position: absolute;
    z-index: -1;
    filter: mask();
    top: -4px;
    left: -4px;
    width: 193px;
    height: 200px;

我正在使用 IE7 进行测试,但我在 Firefox 中看到了相同的行为。

对这个问题有什么想法吗?

【问题讨论】:

【参考方案1】:

首先,您在哪个浏览器中查看日期选择器?我注意到日期选择器中日期/部分的某些颜色在 IE6 中与后来的浏览器(Firefox 3、Chrome、IE7)相比有所不同。

例如,IE6 似乎忽略了周末的背景颜色。

当前选定日期和今天日期的背景颜色均通过 CSS 控制。 last datepicker 的默认 CSS 是 main flora style sheet,虽然我看到 jQuery 网站上有一个 new version/stylesheet of the datepicker(我还没有正确阅读,我相信它可能是一个新版本)本星期。

样式表中需要更改背景颜色的类的相关默认名称是 -

 /* current input value background color */
.ui-datepicker-current-day

    background: #83C948

/* today's background color */
.ui-datepicker-today 

    background: #83C948

编辑:

如果您使用的是old Datepicker as is,那么这些是插件js文件中的相关行-

this._currentClass = 'ui-datepicker-current-day'; 
// The name of the current day marker class


(printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + ...
// highlight today (if different)

因此,你要么

在您的 CSS 中需要这些 CSS 类 今天要突出显示的样式表和 当前选择的日期

您需要更改名称 插件js文件并使用相同 CSS 中的类名称 样式表

就个人而言,我会选择前者,因为它们是众所周知的类名。

编辑 2:

new datepicker 似乎使用稍微不同的 CSS 来为当前选定日期和今天的日期着色。之前的版本设置了表格单元格 (td) 元素的样式,而新版本设置了单元格内的锚点 (a) 元素的样式。

在 Firefox 3 中使用 Firebug(强烈推荐),今天要着色的 CSS 似乎是

.ui-state-highlight, .ui-widget-content .ui-state-highlight 

    background:#FFE45C url(../images/?new=ffe45c&w=1&h=100&f=png&q=100&fltr[]=over|textures/03_highlight_soft.png|0|0|75) repeat-x scroll 50% top;
    border:1px solid #FED22F;
    color:#363636;

对于输入中当前选择的日期,它是

.ui-state-active, .ui-widget-content .ui-state-active 

    background:#FFFFFF url(../images/?new=ffffff&w=1&h=400&f=png&q=100&fltr[]=over|textures/02_glass.png|0|0|65) repeat-x scroll 50% 50%;
    border:1px solid #FBD850;
    color:#EB8F00;
    font-weight:bold;
    outline-color:-moz-use-text-color;
    outline-style:none;
    outline-width:medium;

这些都来自jQuery UI CSS Framework

【讨论】:

嗨,拉斯。谢谢您的帮助。我查看了我的数据选择器样式表,但似乎没有您列出的类选择器?我试图将它们添加到 css 文件中,但没有运气。我相信我使用的是最新的日期选择器,并且控件的其余部分似乎样式正确。 在 Firefox 中使用 Firebug 来尝试查看当前日期的样式。 Russ 的回答是正确的,我通过查看 Firebug 找到了这两个类名,并且能够突出显示当前日期和所选日期。 感谢所有帮助。我已经设法解决了这个问题,正如你所说,现在锚元素似乎是样式化的,而不是表格单元格。奇怪的是,您的原始元素类名称是我的日期选择器的正确名称 - 这意味着它是某种混合,但是,嘿,它有效! :)【参考方案2】:

这是最好的解决方案:

输入字段,选择星期。

https://github.com/Prezent/jquery-weekpicker

【讨论】:

以上是关于JQuery DatePicker,如何突出显示当前输入的日期?的主要内容,如果未能解决你的问题,请参考以下文章

在jquery UI datepicker中突出显示日期

在 jQuery Datepicker 上突出显示 MySql 日期

使用 jQuery 的 datepicker 突出显示特定范围内的日期

突出显示两个选定日期之间的日期 jQuery UI Datepicker

jQuery UI Datepicker:今天也被选中时不要突出显示

在 Jquery Datepicker 中动态更改突出显示的日期