之前项目梅花雨的一个扩展,不过带时间的日期就不好办了,所以要找个新的日期输入控件来代替。
    网上介绍说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支持了,不知道有多大影响。
    
posted on 2007-12-01 15:36  分享 共赢  阅读(2792)  评论(3)    收藏  举报