需求是;通过js实现。
做一个会议室预定,周一预定周一到周五,
周二预定周二到周五,
周三预定周三到周五,
周四预定周四到周五,
周五预定周五,并且周五下午13;30开始预定下周一到周五。
请教这个js判断怎么完成,还有服务端怎么完成;给点思路,大概的代码解释?
分数给足……请大家帮忙解决!

解决方案 »

  1.   

    楼主,发重了,我提了点思路。http://topic.csdn.net/u/20110824/10/bfd6d0a7-c98c-4177-8081-67e18abce2ab.html?76140
      

  2.   

    楼主这个问题可以用客户端时间控件即可解决,先去下载一个My97DatePicker日期控件,通过下面的例子进行扩充,无非就是设置一下选择的时间段范围<html>   
      <head>   
          
        <title>test</title>     
        <script language="javascript" type="text/javascript" src="Ext/My97DatePicker/WdatePicker.js"></script>  
      </head>   
         
      <body>   
        <input type="text" class="Wdate" onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDays:[1,3,6]})"/>
      </body>   
    </html>
      

  3.   

    获取当前时间,得到星期几,
    1、只要不是星期五,日期控件设置mindate:当前时间,maxdate:本周周五(如果还有小时、分、秒,也要一起加上)
    2、如果是星期五,
    21、当前时间没有大于13;30,日期控件设置mindate:当前时间,maxdate:本周周五(如果还有小时、分、秒,也要一起加上)
    22、当前时间大于13;30,日期控件设置mindate:下周周一,maxdate:下周周五(如果还有小时、分、秒,也要一起加上)
      

  4.   

    My97Date 我也用过,功能确实很强大,楼主可以看看
      

  5.   

    我用的就是My97Date ,但是就是判断预定时间的限制!关键是判断上面我说的需求,其他的添加会议室重复已经解决。
    周一预定周一到周五,
    周二预定周二到周五,
    周三预定周三到周五,
    周四预定周四到周五,
    周五预定周五,并且周五下午13;30开始预定下周一到周五。这个My97Date 可以做到吗?
      

  6.   

    这个控件怎么判断
    是自己在WdatePicker()里另外写个方法吗?获取当前时间,得到星期几,
    1、只要不是星期五,日期控件设置mindate:当前时间,maxdate:本周周五(如果还有小时、分、秒,也要一起加上)
    2、如果是星期五,
    21、当前时间没有大于13;30,日期控件设置mindate:当前时间,maxdate:本周周五(如果还有小时、分、秒,也要一起加上)
    22、当前时间大于13;30,日期控件设置mindate:下周周一,maxdate:下周周五(如果还有小时、分、秒,也要一起加上)
      

  7.   

    My97DatePicker 演示和文档二. 功能及示例
    4. 日期范围限制示例4-1-1 限制日期的范围是 2006-09-10到2008-12-20<input id="d411" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen',minDate:'2006-09-10',maxDate:'2008-12-20'})"/>示例4-1-2 限制日期的范围是 2008-3-8 11:30:00 到 2008-3-10 20:59:30<input type="text" class="Wdate" id="d412" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'2008-03-08 11:30:00',maxDate:'2008-03-10 20:59:30'})" value="2008-03-09 11:00:00"/>
      

  8.   

    代码实现其实不难,只要有思路,给你个提示,楼主得自己去完善,有问题再问<html>   
      <head>   
          
        <title>test</title>     
        <script language="javascript" type="text/javascript" src="Ext/My97DatePicker/WdatePicker.js"></script>  
      </head>
      <body>
    <script language="javascript">
    function datepick()
    {
        var weekday="星期"+"日一二三四五六".substr(new Date().getDay(),1);
        var dtbegin,dtend;
        switch(weekday)
        {
            case "星期一":
                break;
            case "星期二":
                break;
            case "星期三":
                dtbegin="2011-08-24";
                dtend="2011-08-26";
                break;
            case "星期四":
                break;
            case "星期五":
                break;
        }
        return WdatePicker({minDate:dtbegin,maxDate:dtend});
    }
    </script>
     
        <input type="text" class="Wdate" onFocus="datepick()"/>
      </body>   
    </html>
      

  9.   

    function datepick()
    {
        var weekday="星期"+"日一二三四五六".substr(new Date().getDay(),1);
        var dtbegin,dtend;
        switch(weekday)
        {
            case "星期一":
        dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+5} 23:59:59";
                break;
            case "星期二":
        dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+4} 23:59:59";
                break;
            case "星期三":
                dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+3} 23:59:59";
                break;
            case "星期四":
        dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+2} 23:59:59";
                break;
            case "星期五":
        dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+1} 23:59:59";
                break;
    //minDate:'%y-%M-%d 00:00:00',maxDate:'%y-%M-#{%d+4} 23:59:59'
        }
        return WdatePicker({minDate:dtbegin,maxDate:dtend,disabledDays:[6,0],specialDays:[1,2,3,4,5]});
    }
    我的修改是这样的,不知道是否有问题!呵呵
      

  10.   

    那就在case "星期五":里面再判断当前时间是否已经超过13:30
      

  11.   

    case "星期五":
                break;case里面还可以加判断吗?
      

  12.   

    这样的吗?case "星期三":
    if(ordertime>=atorder){
     dtbegin="%y-%M-%d 00:00:00";
             dtend="%y-%M-#{%d+9} 23:59:59";
    }else{
                dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+3} 23:59:59";
    }
                break;
      

  13.   

    有这样的写法吗?case "星期三":
    if(ordertime>=atorder){
     dtbegin="%y-%M-%d 00:00:00";
             dtend="%y-%M-#{%d+9} 23:59:59";
    }else{
                dtbegin="%y-%M-%d 00:00:00";
                dtend="%y-%M-#{%d+3} 23:59:59";
    }
                break;
      

  14.   

    用会议室有主键,加2个时间段是否有交集这边你要写一个循环,获取会议室下数据库已有的预定所有记录,分别取出开始时间S21和结束时间S22,通过客户端获取的开始时间S11和结束时间S12四个变量的单位你可以以一个固定时间(1900-01-01 00:00:00)作为参考值,分别得到秒数
    private bool HasJoin(int s11,int s12,int s21,int s22)
    {
       if((s12<s21) || (s12>s22))
       {
          //无交集,即不冲突
          return false;
        }
        else
       {
          //有交集,即冲突
           return true;
        }
    }
      

  15.   

    如果通过sql语句完成,怎么样?
      

  16.   

    如果用户在前台操作界面停留时间过长之后才提交申请,即使先前在前台用AJAX取到了会议室状态是可以预订的,也可能由于提交之前的这段时间有人申请成功,而AJAX只在选择日期时验证过一次,而出现被别人先预订的返回消息。事实上,从返回预订页面,到用户选择预订时间的间隔不会太久(对于那些真想预订的人来说,在打开网站之前就已经有明确目标,上来就是操作),用AJAX即时验证都显得没什么必要。我上面说的不全,应该是周三返回时不必包括周一和周二这样之前的日程,同时也排除被订下的日程,只返回空置可选择的日程。