jquery ui datepicker:自定义日期标题

时间:2011-10-02 12:12:39

标签: jquery jquery-ui customization jquery-ui-datepicker

一般信息: 我正在使用数据选择器为商店设置营业时间..整整一年。 为此,我有按钮来选择全年的所有星期一等,然后我有其他按钮添加类。 例如,您单击“星期一”,它会选择日历中一年中的所有星期一。 然后你点击“课程”按钮,所有星期一都会在9:00-17:00'开始营业。

我这样做是通过每天使用课程信息保存366天的数组。因此,每天选择一天或多天只需转换为一年中的某一天,并更新数组的索引。

这很好用,但现在我希望在一周内达到同样的效果。所以我做了以下事情:

我正在尝试实现自定义日期名称,将其转换为链接以选择该月的所有星期一。 到目前为止我得到了什么:

//javascript
$("#datepicker").datepicker({
...
    beforeShowDay: setHollidays,
    dayNamesMin: ['<a class="weekSelector" href="7">Zo</a>', 
                  '<a class="weekSelector" href="1">Ma</a>', 
                  '<a class="weekSelector" href="2">Di</a>', 
                  '<a class="weekSelector" href="3">Wo</a>', 
                  '<a class="weekSelector" href="4">Do</a>', 
                  '<a class="weekSelector" href="5">Vr</a>', 
                  '<a class="weekSelector" href="6">Za</a>'],
    monthNames: ['January<span class="invisible">0</span>',
  'February<input type="hidden" value="1" class="invisible"/>',
  'March<input type="hidden" value="2" class="invisible"/>', 
  'April<input type="hidden" value="3" class="invisible"/>',
  'May<input type="hidden" value="4" class="invisible"/>', 
  'June<input type="hidden" value="5" class="invisible"/>',
  'July<input type="hidden" value="6" class="invisible"/>',
  'August<input type="hidden" value="7" class="invisible"/>',
  'September<input type="hidden" value="8" class="invisible"/>',
  'October<input type="hidden" value="9" class="invisible"/>',
  'November<input type="hidden" value="10" class="invisible"/>', 
  'December<input type="hidden" value="11" class="invisible"/>'],
...
});

//selects all days of the month (for one month) that are a given week days. for example: all mondays
$("a.weekSelector").click(function () {
    selDay = $(this).attr("href"); // get the day index
    markerType = 'month'; //use in beforeShowday function to select the days

//添加了代码          var container = $(this).parent('。ui-datepicker-group');
    警报($(容器).find( '看不见的。')VAL());   //添加代码的结尾         $( “#日期选择器”)日期选择器( “刷新”)。         resetMultiSelect(); //重置用于选择的变量
        返回false;     });

//setHollidays adds the correct classes the the days.

这也有效,但如果在第一个月(即一月)总是选择日期。 因为我没有月份的访问权限。因此,当我为“3月”选择标题“星期一”时,将选择1月的所有星期一。

所以最后这里是我的问题:如何在$(“a.weekSelector”)中获得月份(或月份的第一个日期)。点击功能?

编辑:当它完成后,它将变成一个drupal模块,可能是一个jquery插件。

1 个答案:

答案 0 :(得分:0)

这是我修复它的'脏'方式(在点击功能中):

var el = $(this);
var offset = el.offset();
var elTop = offset.top;
var elLeft = offset.left;

var arr = $("a.weekSelector[href='"+selDay+"']");   
$.each(arr, function(i, val) {
 var curTop = $(val).offset().top;
 var curLeft = $(val).offset().left;
 if((elTop == curTop) && (elLeft == curLeft))
{
selmonth = $(".invisible:eq("+i+")").val();
 }
});

这基本上做的是检索具有与单击的href相同的href的所有周选择器(例如所有'星期一'链接),然后将该偏移与被点击元素的偏移进行比较。 然后我使用了我从中得到的id,来搜索隐藏的字段。

我尝试在DOM中搜索隐藏字段,但似乎总是返回undefined。