最近改造的一款可多選的日歷插件,已通過兼容性測試


先上截圖:

    事實上,上面如果換到下個月或者上個月,當前的選擇依然會得到保存,並且顯示如初。

    這個批量選擇日期,在有些場合,比如計划或者查詢的時候可以用到。

    首先聲明:這是改編過來的一個多選日期插件,原來的是一個普通但很實用的日歷控件,再次需要真誠感謝原作者。

    設計了一個類,主要的思路是:(屏蔽選擇即消失的代碼,記住選中並着色的日期,根據日期控件區域繪制過程的當前數據顯示此前記住的日期.)

 

 function $2(id)
{ 
 return  document.getElementById(id);
}
function SelectDateCache()
{ 
  this.Cache=[];//選中並着色的日期存儲在此數組中
  this.Add=function(sDate){
    if(!this.Exist(sDate))
    this.Cache.push(sDate);
  };
  this.Clear=function(){
    this.Cache.splice(0,this.Cache.length);
  };
  this.Remove=function(sDate){
    for(var i=0,l=this.Cache.length;i<l;i++)
    {
       if(this.Cache[i]==sDate)
       {
         this.Cache.splice(i,1);
         break;
       }
    }
  };
  this.Exist=function(sDate){
    for(var i=0,l=this.Cache.length;i<l;i++)
    {
       if(this.Cache[i]==sDate)
       {
         return true;
       }
    }
    return false;
  };
  this.GetRelateControlIdByDate=function(sDate){
    var sDay='',sMonth='',sYear='';
    var sTemp=sDate.split('-');
    if(sTemp[1].substr(0,1)=='0')
    {
     sMonth=sTemp[1].substr(1);
    }
    else 
    {
     sMonth=sTemp[1];
    }
    sMonth=(parseInt(sMonth+'')-1)+"";
    if(sTemp[2].substr(0,1)=='0')
    {
      sDay=sTemp[2].substr(1,1);
    }
    else
    {
      sDay=sTemp[2];
    }
    sYear=sTemp[0];
    var controlId="day-"+sDay+"-"+sMonth+"-"+sYear;
    return controlId;
  };
  this.GetDateFromControlId=function(sControlId){
    //day-16-1-2013
    var sTemp=sControlId.split('-');
    if(sTemp[1].length==1)
       sTemp[1]='0'+sTemp[1];
    sTemp[2]=(parseInt(sTemp[2])+1)+"";
    if(sTemp[2].length==1)
       sTemp[2]='0'+sTemp[2];
     return sTemp[3]+'-'+sTemp[2]+'-'+sTemp[1];
  };
}
var  aSelectController=new SelectDateCache();

 

前端頁面的部分代碼:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無標題頁</title>
       <link  type="text/css" rel="Stylesheet"  href="/JS/Plugin/CalendarSelector/pricecalendar.css"/>
    <script  type="text/javascript"  src="/JS/Plugin/CalendarSelector/SelectController.js"></script>
     <script  type="text/javascript"  src="/JS/Plugin/CalendarSelector/calendarn.js"></script>
      <script  type="text/javascript"  src="/JS/Plugin/CalendarSelector/calendarFun.js"></script>
       <script  type="text/javascript"  src="/JS/Plugin/CalendarSelector/calendarCfg.js"></script>
</head>
<body>
    <form id="form1" runat="server">

    <div>
    <div  id="div_calendar"  style="height:450px;">
     <input    style="width:150px;visibility:hidden" id="startDate" name="startDate" type="text" ondblclick="this.value=''" 
                                maxlength="10" readonly="readonly" value='<%=Request["startDate"]== null?"":Request.Params["startDate"] %>' />
    </div>
<br />    <div  style="text-align:center">
    <input  type="button"    onclick="ShowPriceCalendar(event);" value="打開"/>
        <input  type="button"    onclick="ClosePriceCalendar();" value="關閉"/>

<br />

    </div>
    
    </div>
    </form>
    <script type="text/javascript">
        function ShowPriceCalendar(eventObj) {
            Calendar.display(document.getElementById('startDate'), new Date(),
                                AddDay('D', 1, new Date()), undefined, 1, undefined, null, eventObj);
        }
        function ClosePriceCalendar() {
            Calendar.closeCalendar();
        }
        function OnLoadFunction(eventObj) {
            ShowPriceCalendar(eventObj);
        }
        Calendar.ToActionOnClicked = function(sSelectedDate) {
            var cObj=$2(aSelectController.GetRelateControlIdByDate(sSelectedDate));
            if (!aSelectController.Exist(sSelectedDate)) {
                cObj.style.backgroundColor = "#C0BBAF";
                aSelectController.Add(sSelectedDate);
            }
            else {
                
                    cObj.style.backgroundColor = "";
                    aSelectController.Remove(sSelectedDate);
            }
        };
    </script>
</body>
</html>

 

   另外上述引用的js,css文件我已經上傳到園子里的文件中了,不過找了半天,我竟然有點不清楚如何把博客管理中文件中的資源通過某種方式顯示在當前文檔.

   外面有點冷,感覺有些困了..

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM