2010-02-25 121 views
1

我想要做的事情是在一周中的某些日子里为某个会场关闭时灰色。每个场地可能会在不同的日子关闭。在jQuery UI Datepicker中使用beforeShowDay来关闭本周的几天

我可以使用下面的代码作为一个测试,以关闭所有星期日:

$('#bookingDatepicker').datepicker({ 
       minDate: 0, 
       maxDate: '+3M', 
       dateFormat: 'DD, d MM, yy', 
       altField: '#actualDate', 
       altFormat: 'yy-mm-dd', 
       beforeShowDay: closedDays 
      }); 

function closedDays(date) { 
    if (date.getDay() == 0){ 
    return [false,"","Venue Closed"]; 
    } else { return [true, ""]; 
} 
} 

不过,我可能不得不关门大吉了超过一天,他们可能不会彼此相邻运行。在从数据库中我的代码可以创建一个字符串,下面的例子,这表明什么天都开放...

1,2,3,4,5,6,0 //I would want to show no days closed 
2,3,4,5,6  //I would want to show Sunday (0) and Monday (1) closed 

我不知道如何处理这虽然做的就是上面的代码工作。我使用PHP来创建字符串,因此可以使用它来处理它,如果需要的话。

编辑

当你发布你得到一个小小的突破的一个问题就是往常一样!我已经开发了下面的代码,它工作,如果我在其中使用虚拟数据,但是我需要找到一种方法来包装我的字符串值“”。这是现在导致我麻烦,如果我只是用VAR cloDays = [2,3,4,5],它就不再

var cloDays = ["2","3","4","5"]; 
function closedDays(date){ 
var sDate = date.getDay().toString(); 
if ($.inArray(sDate, cloDays) == -1) return [false,"","Venue Closed"]; 
else return [true, ""]; 
} 

回答

0

管理运行通过下面的代码我的带子将其固定的工作,基本上它爆炸到一个PHP数组中,然后使用JSON_Encode对其进行编码。似乎很好地工作:

$cloDays = json_encode(explode(",", $cloDays)); 
3

这篇文章没有解决我的问题,但指出我在正确的方向。

这是什么工作,我想要的方式:

var unavailableDates = ["9-5-2011","10-5-2011"]; 

function unavailable(date) { 
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear(); 
    if ($.inArray(dmy, unavailableDates) == -1) { 
     return [true, ""]; 
    } else { 
     return [false,"","Unavailable"]; 
    } 
} 

$('#iDate').datepicker({ minDate: +1, beforeShowDay: unavailable }); 

这将阻止所有日期在过去,包括今天再块unavailableDates数组中指定的日期。