扩展下jscalendar,添加ShowCalendar方法

    之前项目梅花雨的一个扩展,不过带时间的日期就不好办了,所以要找个新的日期输入控件来代替。
    网上介绍说 jscalendar蛮好用的。不过一个全局的 Calendar.setup方法,对于页面上有多个日期输入框就比较麻烦了,所以要扩展下(calendar.js结尾处添加即可):     
// custom functions
function  ShowCalendar(obj,dateFormat,displayTime)
 
{
    
if(obj != undefined)
    
{
        dateFormat 
= dateFormat || "%Y/%m/%d";
        
var date = Date.parseDate(obj.value , dateFormat);        

        
var cal = new Calendar(Calendar._FD,
                               date,
                               onSelect,
                               
function(cal) { cal.hide(); });
        cal.showsTime 
= displayTime || false;
        cal.yearStep 
= 1;
        cal.setRange(
19002999);
        cal.setDateFormat(dateFormat);
        cal.params 
= {
            inputField:obj,
            ifFormat:cal.dateFormat,
            daFormat:cal.dateFormat,
            electric:
true,
            singleClick:
true
        }
;
        cal.electric 
= true;
        cal.create();
        cal.refresh();
        cal.showAtElement(obj, 
"Br"); 
    }
                                
}


function  onSelect(cal) 
{
    
var p = cal.params;
    
var update = (cal.dateClicked || p.electric);
    
if (update && p.inputField) {
        p.inputField.value 
= cal.date.print(p.ifFormat);
        
if (typeof p.inputField.onchange == "function")
            p.inputField.onchange();
    }

    
if (update && p.displayArea)
        p.displayArea.innerHTML 
= cal.date.print(p.daFormat);
    
if (update && typeof p.onUpdate == "function")
        p.onUpdate(cal);
    
if (update && p.flat) {
        
if (typeof p.flatCallback == "function")
            p.flatCallback(cal);
    }

    
if (update && p.singleClick && cal.dateClicked)
        cal.callCloseHandler();
}

// end custom functions

    扩展之后,不需再写 Calendar.setup了。新方法如下:
<% @ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml" >
< head  runat ="server" >
    
< title > Untitled Page </ title >
    
< style  type ="text/css"   > @import url(calendar-tas.css); </ style >
    
< script  type ="text/javascript"  src ="calendar.js" ></ script >
    
< script  type ="text/javascript"  src ="lang/cn_utf8.js" ></ script >
    
< script  type ="text/javascript"  src ="calendar-setup.js" ></ script >
</ head >
< body >
    
< form  id ="form1"  runat ="server" >
    
< div >
  
< input  type ="text"  id ="data"  name ="data"  onclick ="return ShowCalendar(this,'%Y-%m-%d',false)"   />
< input  type ="text"  id ="Text1"  name ="data"  onclick ="return ShowCalendar(this,'%Y-%m-%d %H:%M','true')"   />

    
</ div >
    
</ form >
</ body >
</ html >

    感觉清晰多了。
    不过花掉了我三个小时, 。在新方法中去掉cache支持了,不知道有多大影响。
    

你可能感兴趣的:(calendar)