jQuery UI Datepicker条件混乱..是否有更简洁的方法来做到这一点?

时间:2012-02-02 19:04:33

标签: javascript jquery datepicker

我正在使用jQuery UI Datepicker设置一个“约会”调度程序,但我有一些条件需要实现:

  • 客户无法在星期天安排
  • 客户无法在星期六中午12点之后安排(尚未实施)
  • 如果当前时间已过了12点,则无法安排第二天
  • 无法提前大量安排(我选择+2个月)
  • 无法安排当天(显然不是过去)

这是我目前的代码:

$(document).ready(function() {
    function noSundays(date) {
        return [date.getDay() != 0, ''];
    }
    var timezone = "EST";
    $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
    function(data){
        if (data.hour < 12) {
            $("#datepicker").datepicker({ 
            beforeShowDay: noSundays,
            minDate: '+1d',
            maxDate: '+2m' });
        } else {
            $("#datepicker").datepicker({ 
            beforeShowDay: noSundays,
            minDate: '+2d',
            maxDate: '+2m' });
        }
    })
});

所以我们设置noSundays,从JSON服务器获取EST的当前时间,如果是在12PM之前,我们用minDate:+ 1d(明天)启动.datepicker,如果是在12PM之后我们使用minDate:+ 2d。这段代码有效,但我觉得我做错了。我仍然相对缺乏经验,并且很想知道是否有更好的方式来写这个。

谢谢。

1 个答案:

答案 0 :(得分:1)

可以像这样缩短

$(document).ready(function() {
    var timezone = "EST";
    $.getJSON("http://json-time.appspot.com/time.json?tz="+timezone+"&callback=?",
      function(data){
        var parms = { 
          beforeShowDay: function(date) {
            return [date.getDay() != 0, ''];
          },
          minDate: '+2d',
          maxDate: '+2m' }
        if (data.hour < 12) {
          parms.minDate= '+1d';
          parms.maxDate= '+2m';
        }
        $("#datepicker").datepicker(parms);
      })
    });