My97DatePicker关于请假日期前后端判断已选日期不可再选

关于My97DatePicker关于请假日期前后端判断已选日期不可再选,不过有个小bug(关于在数据库中已经存在 比如:请假12-15,17-18这几天,但我又请了11号 16号,在前端页面没有提示 其实已经重复了,不能再请,我写在了后台页面,可查看连接https://www.cnblogs.com/TripMaster/p/11398399.html),后期会修改。

 1 <tr>
 2                         <td align="right" width="30%">开始时间:</td>
 3                         <td align="left"><input type="text" name="tbLeave.beginLeave" readOnly="readonly"
 4                             id="beginLeave"
 5                             onClick="WdatePicker({onclearing:wp()})" class="Wdate"  /><br/>
 6                         </td>
 7                     </tr><br/>
 8                     <tr>
 9                         <td align="right" width="30%">结束时间:</td>
10                         <td align="left"><input type="text" name="tbLeave.endLeave" readOnly="readonly"
11                             id="endLeave" onClick="WdatePicker({onclearing:wp()})" class="Wdate"/><br/></td>
12                     </tr><br/> 

jsp

 1 public String getVacationsTime(){
 2         TbUser tbUser=(TbUser) getFromSession("loginUser");
 3         String beginLeave = "";
 4         String endLeave = "";//构造2个字符串存放每个请假条的开始和结束时间//获取当前用户所有请假条
 5         try {
 6             leaveList=leaveService.getLeavesByUsername(tbUser.getId());
 7              for (int i = 0; i < leaveList.size(); i++) {
 8                     SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
 9                     String begins = sdf.format(leaveList.get(i).getBeginLeave());
10                     String ends = sdf.format(leaveList.get(i).getEndLeave());
11
12                     if(beginLeave!="" && beginLeave!=null){//拼接开始时间和结束时间的字符串,传递到用户端
13                         beginLeave+=",";
14                     }
15                     beginLeave+=begins;
16                     if(endLeave!="" && endLeave!=null){
17                         endLeave+=",";
18                     }
19                     endLeave+=ends;
20
21                 }
22
23                      resultMap.put("beginLeave", beginLeave);
24                      resultMap.put("endLeave", endLeave);
25
26                 log.info("method getVacationsTime 获取开始结束时间 is successful!!!!");
27                 resultMap.put("retcode", RetCode.SUCCESS);
28                 resultMap.put("retmsg", "获取开始结束时间 成功");
29
30                 log.info("请假时间冲突,fail!!!");
31                 resultMap.put("retcode", RetCode.FAIL);
32                 resultMap.put("retmsg", "请假时间冲突,从新选择");
33
34         } catch (Exception e) {
35             e.printStackTrace();
36             log.error("method addEmails bug:{}",e);
37             resultMap.put("retcode", RetCode.UNKOWN_WRONG);
38             resultMap.put("retmsg", "未知错误,请重试或联系管理员");
39         }
40
41         return SUCCESS;
42     }

action

 1 <action name="getVacationsTime" class="leaveAction" method="getVacationsTime">
 2                 <result type="json">
 3                      <param name="root">resultMap</param>
 4                   </result>
 5            </action>
 6
 7         <action name="beginTOEnd" class="leaveAction" method="beginTOEnd">
 8                 <result type="json">
 9                      <param name="root">resultMap</param>
10                   </result>
11            </action>

struts

 1 <script type="text/javascript">
 2 $(function wp(){
 3     var beginArray=new Array();
 4     var endArray=new Array();
 5     var disableDate=new Array();
 6 //得到数据库中beginLeave和endLeave,构造数组
 7     $(document).ready(function(){
 8     var url="${ctx}/leave/getVacationsTime.action";//获取到所有值,进行判断
 9       $.post(
10             url,
11             function(data){
12                     //alert(data.beginLeave);
13                     //alert(data.endLeave);
14
15                 beginArray = data.beginLeave.split(",");//去掉 , 号
16                 endArray = data.endLeave.split(",");
17
18                 var index=0;
19                 for(var i=0;i<beginArray.length;i++){//遍历每个TbLeave的开始时间和结束时间
20                     var beginLeave=new Date(beginArray[i]).dateFormat();
21                     var endLeave=new Date(endArray[i]).dateFormat();
22                     beginArray[i] = beginLeave;
23                     endArray[i] = endLeave;
24                     var arr=getAll(beginLeave,endLeave);//调用下面自定义getAll()方法,获取该TbLeave开始时间和结束时间之间所有的日期
25                     for(var j=0;j<arr.length;j++){//遍历getAll()所有的日期,放到disableDate数组中
26
27                         disableDate[index]=arr[j];
28                         index+=1;
29                     }
30                 }
31                 //alert(disableDate.toString());  //输出是否显示所有日期
32             }
33         );
34     });
35     $("#beginLeave").click(function(){//开始时间日历控件的单击事件
36         WdatePicker({
37             skin:‘whyGreen‘,
38             dateFmt:‘yyyy-MM-dd‘,
39             minDate:‘%y-%M-%d+1‘,//限制今天之前的日期
40             maxDate:‘#F{$dp.$D(\‘endLeave\‘)}‘,//endLeave是结束时间的id
41             disabledDays:[0,6],//限制周六和周日不能请假
42             disabledDates:disableDate//限制所有的日期,disableDate数组获取到的值,全部限制
43         });
44     });
45     $("#endLeave").click(function(){//结束时间日历控件的单击事件
46         WdatePicker({
47             skin:‘whyGreen‘,
48             dateFmt:‘yyyy-MM-dd‘,
49             minDate:‘#F{$dp.$D(\‘beginLeave\‘)}‘,
50             disabledDays:[0,6],
51             disabledDates:disableDate
52         });
53     });
54
55     //获取begin和end之间所有的 日期格式化 函数
56     Date.prototype.dateFormat = function() {
57     var s = ‘‘;
58         var mouth = (this.getMonth() + 1)>=10?(this.getMonth() + 1):(‘0‘+(this.getMonth() + 1));
59         var day = this.getDate()>=10?this.getDate():(‘0‘+this.getDate());
60         s += this.getFullYear() + ‘-‘; // 获取年份。
61         s += mouth + "-"; // 获取月份。
62         s += day; // 获取日。
63         return (s); // 返回日期。
64     };
65     //获取begin和end之间所有的 日期 函数
66     function getAll(begin, end) {
67           var arr=new Array();
68           var ab = begin.split("-");
69           var ae = end.split("-");
70           var db = new Date();
71           db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
72           var de = new Date();
73           de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
74           var unixDb = db.getTime();
75           var unixDe = de.getTime();
76           var i=0;
77           for (var k = unixDb; k <= unixDe;) {
78               /* console.log((new Date(parseInt(k))).dateFormat()); */
79               arr[i]=(new Date(parseInt(k))).dateFormat();
80               i+=1;
81               k = k + 24 * 60 * 60 * 1000;
82           }
83           return arr;
84     }
85
86 });
87 </script>

script

<a>

原文地址:https://www.cnblogs.com/TripMaster/p/11398419.html

时间: 2024-10-12 17:56:21

My97DatePicker关于请假日期前后端判断已选日期不可再选的相关文章

获得当前输入日期前(后)x天的日期

package com.xcfh.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * * @ClassName: BeforeOrAfterDate * * @Description: 获得当前输入日期前(后)x天的日期 * @author PineTree * @date 2014年12月

My97DatePicker请假日期后端判断已选日期不可再选

对于后台进行请假日期验证,如果有重复可以判断,如法提交 1 public String doAddLeaves(){ 2 try { 3 TbUser tbUser=(TbUser) getFromSession("loginUser"); 4 leaveList=leaveService.getLeavesByUsername(tbUser.getId());//获取当前用户所有请假条 5 int row = 0; 6 //System.err.println("=====

你不得不了解的前后端分离原理!

原文:来源于网络 前言 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路. 核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互. 在互联网架构中,名词解释: Web服务器:一般

前后端分离原理

前言 前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路.核心思想是前端HTML页面通过Ajax调用后端的restuful api接口并使用json数据进行交互. 在互联网架构中,名词解释: Web服务器:一般指像Nginx,A

JavaWeb项目放弃jsp?为什么要前后端解耦?为什么要前后端分离?

前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路. 核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互. 名词解释:在互联网架构中,web服务器:一般指像nginx,ap

带头大哥777:为什么要前后端分离?

一.前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路. 核心思想是前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互. 在互联网架构中,名词解释: Web服务器:一般指像nginx

web开发-前后端分离原理

前言 前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路.核心思想是前端HTML页面通过Ajax调用后端的restuful api接口并使用json数据进行交互. 在互联网架构中,名词解释: Web服务器:一般指像Nginx,A

前后端分离架构概述

原文转自: https://blog.csdn.net/fuzhongmin05/article/details/81591072 1.背景       前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础.这个步骤是系统架构从猿进化成人的必经之路. 核心思想是前端HTML

测试人员需要了解一下开发人员一直在讲的前后端分离

最近做的一个前后端分离的项目,来了补充一下前后端分离的知识点,发现这篇文章特别好,收藏起来, 这篇文章有点长,哈哈 作者:偏头痛杨 来源:https://blog.csdn.net/piantoutongyang 一.前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基