【问题标题】:Highlight <TR> entire week datepicker突出显示 <TR> 整周日期选择器
【发布时间】:2011-08-25 09:11:53
【问题描述】:

我有一个功能齐全且正在工作的日期选择器,您可以从中选择整个开始工作周(周一至周五)。我现在要做的是进一步扩展它,以便当我点击特定的一周时。它将突出显示整个 .我让它部分工作,如下所示:Calandar preivew。可以看出我遇到的问题是表格行对我来说似乎是在做一个奇数,偶数,奇偶数。至于第一周,我突出显示该行以红色突出显示,单元格以黄色突出显示。然后在它工作正常之后的一周,然后如果我要选择之后的一周,同样会重复。我尝试检查 jquery-ui-1.8.4.custom.css 和 jquery-ui.css,但没有运气。似乎让我感到困惑的是为什么单元格以黄色突出显示?我的日期选择器的代码如下。

Javascript:

$(function() 
{
    var startDate;
    var endDate;
    var selectCurrentWeek = function() 
    {
        window.setTimeout(function () { $('.week-picker').find('.ui-datepicker-current-day a').addClass('ui-state-active')}, 1);
    }
    function check(d) {
        if(d.length() == 2) {
            dd = d;
            return dd;
        } else {
            dd = "0" + myDateParts[0];
            return dd;
        }
    }

    var selectedWeek;//remember which week the user selected here

    $('.week-picker').datepicker( {
        beforeShowDay: $.datepicker.noWeekends,
        showOtherMonths: true,
        selectOtherMonths: true,
        onSelect: function(dateText, inst) {
            var date = $(this).datepicker('getDate');
            startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 1);
            endDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 6);
            var dateFormat = 'yy-mm-dd'
            var newDate = $('#startDate').text($.datepicker.formatDate( dateFormat, startDate, inst.settings ));

            var oldDate = document.getElementById('startDate');
            var date_textnode = oldDate.firstChild;
            var date_text = date_textnode.data;
            myDateParts = date_text.split("-");

            var dd = myDateParts[2];

            var mm = myDateParts[1];

            var yy = myDateParts[0];

            selectCurrentWeek();

            window.location.href = "/timesheet?week_commencing=" + yy + "-" + mm + "-" + dd;

        },
        beforeShowDay: function(date) {

            var cssClass = '';
            if(date >= startDate && date <= endDate)
                cssClass = 'ui-datepicker-current-day';
            return [true, cssClass];
        },
        onChangeMonthYear: function(year, month, inst) {
            selectCurrentWeek();
        }
    });

   $( ".week-picker" ).datepicker().click(function(event) {
    // highlight the TR
    $(".ui-datepicker-current-day").parent().addClass('highlight');

    // highlight the TD > A
    $(".ui-datepicker-calendarr-day").siblings().find('a').addClass('white');
}); 
    $('.week-picker .ui-datepicker-calendar tr').live('mousemove', function() { $(this).find('td a').addClass('ui-state-hover'); });
    $('.week-picker .ui-datepicker-calendar tr').live('mouseleave', function() { $(this).find('td a').removeClass('ui-state-hover'); });


});

HTML

<div class="datepicker borderbox">
        <b><center>Hours for Week commencing: <span id="startDate"></span></center></b>
        <div class="week-picker"></div>
    </div>

CSS

.highlight {
    border: 1px solid red;
}

.white {
    background: white !important;
}

我已尝试查看以下 stackoverflow 问题 Related stackoverflow。没有运气,因为链接已损坏,并且还尝试在 JSfiddle 中查看它。除此之外,我设置日期选择器的方式也不同。

我最初试图让我的日历像this 一样工作,但由于某种原因,当我尝试这样做时,我得到以下结果。这与css有关吗

更新2

Calendar & Firebug output

【问题讨论】:

  • 它似乎在这里工作:jsfiddle.net/nayish/YQ2Zw
  • 我查看了您提供的 jsfiddle 并对其进行了测试。这似乎不起作用我已经更新了我的帖子
  • 我刚刚做了更改,你回复得很快;)
  • 我实际上无法在我的计算机上看到它是如何渲染的,所以我真的帮不上忙……抱歉……

标签: javascript jquery jquery-ui jquery-ui-datepicker


【解决方案1】:

这是你想要的吗?

http://jsfiddle.net/william/YQ2Zw/2/

有几个地方出了问题:

ui-datepicker-current-day 类被应用于&lt;td&gt; 元素,因此它只需要向上移动一层即可找到&lt;tr&gt;,因此我取消了对parent() 的调用:

$(".ui-datepicker-current-day").parent().addClass('highlight');

您使用 ui-datepicker-current-day 类设置了多天。这就是为什么我需要使用:eq(0) 选择器来只选择第一个元素:

$(".ui-datepicker-current-day:eq(0)").siblings().find('a').addClass('white');

另外,您为上述语句调用了错误的类。

【讨论】:

  • 是的,这正是我试图做的事情,我哪里出错了?
  • 我检查了 jsfiddle,它给了我之前遇到的类似错误。我似乎无法理解为什么单元格以黄色突出显示。我认为这可能与我的 jquery-ui-1.8.4.custom 有关系
  • 小提琴不见了
猜你喜欢
  • 2012-11-01
  • 2020-08-13
  • 2011-10-15
  • 2019-12-07
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 2021-07-29
  • 2022-11-12
相关资源
最近更新 更多