关于一个带有CheckBox 多选日期的日历
阿土伯土 2004-06-17 12:16:41 calendarBox.js
document.write('<iframe id=CalFrame name=CalFrame frameborder=0 src=calendarBox.htm style=display:none;position:absolute;z-index:100></iframe>');
document.onclick=hideCalendar;
function showCalendar(sImg,bOpenBound,sFld1,sFld2,sCallback)
{
var fld1,fld2;
var cf=document.getElementById("CalFrame");
var wcf=window.frames.CalFrame;
var oImg=document.getElementById(sImg);
if(!oImg){alert("控制对象不存在!");return;}
if(!sFld1){alert("输入控件未指定!");return;}
fld1=document.getElementById(sFld1);
if(!fld1){alert("输入控件不存在!");return;}
if(fld1.tagName!="INPUT"||fld1.type!="text"){alert("输入控件类型错误!");return;}
if(sFld2)
{
fld2=document.getElementById(sFld2);
if(!fld2){alert("参考控件不存在!");return;}
if(fld2.tagName!="INPUT"||fld2.type!="text"){alert("参考控件类型错误!");return;}
}
if(!wcf.bCalLoaded){alert("日历未成功装载!请刷新页面!");return;}
if(cf.style.display=="block"){cf.style.display="none";return;}
var eT=0,eL=0,p=oImg;
var sT=document.body.scrollTop,sL=document.body.scrollLeft;
var eH=oImg.height,eW=oImg.width;
while(p&&p.tagName!="BODY"){eT+=p.offsetTop;eL+=p.offsetLeft;p=p.offsetParent;}
cf.style.top=(document.body.clientHeight-(eT-sT)-eH>=cf.height)?eT+eH:eT-cf.height;
cf.style.left=(document.body.clientWidth-(eL-sL)>=cf.width)?eL:eL+eW-cf.width;
cf.style.display="block";
wcf.openbound=bOpenBound;
wcf.fld1=fld1;
wcf.fld2=fld2;
wcf.callback=sCallback;
wcf.initCalendar();
}
function hideCalendar()
{
var cf=document.getElementById("CalFrame");
cf.style.display="none";
}
calendarBox.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type=text/css>
td{font-size:12;font-home:arial;text-align:center}
td.dt{font-size:11;font-home:arial;text-align:left}
a{color:blue}
a:hover{color:red}
a.bt{color:#888888}
</style>
<script language=javascript>
<!--//
var str='',i,j,yy,mm,openbound,callback;
var fld1,fld2;
var wp=window.parent;
var cf=wp.document.getElementById("CalFrame");
var fld,curday,today=new Date();
today.setHours(0);today.setMinutes(0);today.setSeconds(0);today.setMilliseconds(0);
//var lastyear=today.getYear(),lastmonth=today.getMonth();
function parseDate(s)
{
var reg=new RegExp("[^0-9-]","")
if(s.search(reg)>=0)return today;
var ss=s.split("-");
if(ss.length!=3)return today;
if(isNaN(ss[0])||isNaN(ss[1])||isNaN(ss[2]))return today;
return new Date(parseInt(ss[0]),parseInt(ss[1])-1,parseInt(ss[2]));
}
function resizeCalendar(){cf.width=242;cf.height=202;}
function initCalendar()
{
if(fld1&&fld1.value.length>0){curday=parseDate(fld1.value);}
else if(fld2&&fld2.value.length>0){curday=parseDate(fld2.value);}
else curday=today;
drawCalendar(curday.getFullYear(),curday.getMonth());
}
function drawCalendar(y,m)
{
var x=new Date(y,m,1),mv=x.getDay(),d=x.getDate(),de;
yy=x.getFullYear();mm=x.getMonth();
document.getElementById("yyyymm").innerHTML=yy+"."+(mm+1>9?mm+1:"0"+(mm+1));
for(var i=1;i<=mv;i++)
{
de=document.getElementById("d"+i);
de.innerHTML="";
de.bgColor="";
}
while(x.getMonth()==mm)
{
de=document.getElementById("d"+(d+mv));
if(x.getTime()==curday.getTime())
de.bgColor="#dddddd";
else
de.bgColor="white";
if(x.getTime()==today.getTime())
de.innerHTML="<input type=checkbox name=CalendarBox value="+d+"><a href=javascript:setDate("+d+");><font color=red>"+d+"</font></a>";
else if(x.getTime()<today.getTime())
if(openbound){de.innerHTML="<input type=checkbox name=CalendarBox value="+d+"><a href=javascript:setDate("+d+"); class=bt>"+d+"</a>";}
else{de.innerHTML="<input type=checkbox name=CalendarBox value="+d+" disabled><font color=#888888>"+d+"</font>";}
else
de.innerHTML="<input type=checkbox name=CalendarBox value="+d+"><a href=javascript:setDate("+d+");>"+d+"</a>";
x.setDate(++d);
}
while(d+mv<=42)
{
de=document.getElementById("d"+(d+mv));
de.innerHTML="";
de.bgColor="";
d++;
}
}
function setDate(d)
{
var dstr=yy+"-"+(mm+1)+"-"+d;
if(callback&&callback.length>0){eval("wp."+callback+"(\""+dstr+"\")");}
else{fld1.value=dstr;}
wp.hideCalendar();
}
//-->
</script>
</head>
<body topmargin=0 leftmargin=0 bottommargin=0 rightmargin=0 onload="resizeCalendar();">
<table id=tbl0 bgcolor=#336699 border=0 cellpadding=1 cellspacing=0><tr><td>
<table width=100% border=0 cellpadding=2 cellspacing=1 bgcolor=white>
<tr bgcolor=gray>
<td width=16 id=prev><a href=javascript:drawCalendar(yy,mm-1);><img src=/Images/prev.gif border=0 width="16" height="16"></a></td>
<td width=99% id=yyyymm style=font-size:11;color:white></td>
<td width=16 id=next><a href=javascript:drawCalendar(yy,mm+1);><img src=/Images/next.gif border=0 width="16" height="16"></a></td>
</tr>
</table>
<table width=142 border=0 bgcolor=white cellpadding=0 cellspacing=2>
<tr height=18><td width=18><font color=red>日</font></td><td width=18>一</td><td width=18>二</td><td width=18>三</td><td width=18>四</td><td width=18>五</td><td width=18><font color=green>六</font></td></tr>
<tr height=1><td colspan=7 bgcolor=gray></td></tr>
<script language=javascript>
<!--//
for(i=0;i<6;i++)
{
str+="<tr height=18>";
for(j=1;j<=7;j++)str+="<td id=d"+(i*7+j)+" class=dt></td>";
str+="</tr>";
}
document.write(str);
//-->
</script>
<tr height=1><td colspan=7 bgcolor=gray></td></tr>
<tr height=18><td colspan=7><a href="javascript:alert(document.all.CalendarBox.value);">提交</font></a> <a href="javascript:wp.hideCalendar();">关闭</font></a></td></tr>
</table>
</td></tr></table>
<script language=javascript>
<!--//
var bCalLoaded=true;
//-->
</script>
</body>
</html>
test.htm
<script language="JavaScript" src="calendarBox.js"></script>
<input name="outDate" type="text" size="6" id="outDate">
<A onclick=event.cancelBubble=true; href="javascript:showCalendar('dimg1',false,'outDate')"><img src="/Hotel/Images/calendar.gif" width="34" height="21" border="0" align="absmiddle" id=dimg1></A>
问题:
请问如何将各个日期提交到同一输入框
例如:将 2004-6-7 和 2004-7-8 两个日期或更多日期提交到输入框