梅花雨,你好,你的日历控件怎么放在框架中就不能用了???

huzenhuzen 2003-06-23 11:39:18
up
...全文
80 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cainiao_2000 2003-09-12
  • 打赏
  • 举报
回复
你的问题我碰到过,你可以用第二版的梅花雨日历控件就没问题了:
http://hazeline.vip.sina.com/calendar.htm
黑马 2003-09-12
  • 打赏
  • 举报
回复
aduan1026(阿段) 方法也可以的,但是在不同的IE版本中不一样
liuzxit 2003-08-29
  • 打赏
  • 举报
回复
=========getCale.js=========
/*name:萬年歷控件
author:liuzxit
design-date:2002/12/19
note:在IE5.5下測試通過
*/

function caleTDMove(e){e.style.borderColor="#ffffff #333333 #333333 #ffffff"}
function caleTDOut(e){e.style.border="solid 1pt #c6c6c6"}
function hideCale(){popCale.hide()}

function yearChange(){ //重寫年份的<SELECT>
var e=popCale.document.all('yearSel')
e.options.length=0
for (i=nYear-4;i<parseInt(nYear)+5;i++){
e.options.length++
e.options[e.options.length - 1].value=i
e.options[e.options.length - 1].text=i
}
e.selectedIndex=4
}

function CaleClick(e){ //選定某一天時
if(isNaN(parseInt(e.innerText))){ //如果是點擊"今天"而觸發
var d=new Date()
tarObject.value=d.getFullYear()+'/'+(d.getMonth()+1)+'/'+d.getDate()
e.style.borderColor="#848484"
}
else{tarObject.value=nYear+'/'+(parseInt(nMonth)+1)+'/'+e.innerText
e.style.borderColor="#c6c6c6"
}
popCale.hide()
}

function changeYM(e,n){ //改變年份或月份﹐或點>>和<<時觸發
if (e.tagName=='SELECT'){
if(e.value.length==4){nYear=e.value;yearChange()}
else{nMonth=e.value}
}
else{nMonth=parseInt(nMonth)+n
switch(nMonth){
case 12:nYear++;nMonth=0;
yearChange()
popCale.document.all('monthSel').selectedIndex=0;break;
case -1:nYear--;nMonth=11;
yearChange()
popCale.document.all('monthSel').selectedIndex=11;break;
default:popCale.document.all('monthSel').selectedIndex=nMonth;break;
}
}
rewriteCale()
}

function rewriteCale(){ //重寫日歷
var newTb,newTR,newTD
newTb=popCale.document.all('LiuzxCale').tBodies[0]
for (i=0;i<=newTb.rows.length;i++)newTb.deleteRow(2)
qtyDay=(new Date(nYear,parseInt(nMonth)+1,1) - new Date(nYear,nMonth,1))/24/3600/1000
fDay=1-(new Date(nYear,nMonth,1).getDay())
for (i=0;i<42;i++){
if (i % 7==0)newTR=newTb.insertRow(newTb.rows.length - 2)
newTD=newTR.insertCell()
if (fDay>0 && fDay<=qtyDay)newTD.innerText=fDay
newTD.style.border="solid 1pt #c6c6c6"
newTD.align='center'
newTD.onmouseover=Function("parent.caleTDMove(this)")
newTD.onmouseout=Function("parent.caleTDOut(this)")
newTD.onclick=Function("parent.CaleClick(this)")
fDay++
}
}

function isDate(str){ //判斷日期是否是合法的
var reg = /^(\d{4})(-|\/)(0?[1-9]|1[0-2])(-|\/)(0?[1-9]|[12][0-9]|3[01])$/g;
var r = reg.exec(str);
if(r==null)return false;
var d = new Date(r[1], r[3]-1,r[5]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
var reg=/(\/|-)(0*)( *)([1-9])/g
var t=str.replace(reg,'$1$4')
if (newStr==t)return true;
return false;
}

function getDATE(s){ //設定那個控件加入萬年歷
tarObject=s
if ((s.value!='')&&(isDate(s.value))){ //如果控件原來有日期并且是合法的
var reg=/(\d{4})(\/)(\d{1,2})(\/)(\d{1,2})/
var r=reg.exec(s.value);
nYear=r[1];nMonth=r[3] - 1;
}
else{
var d=new Date()
nYear=d.getFullYear();nMonth=d.getMonth();
}
var e=event.srcElement
popCale.show(-70,e.clientHeight+5,185,172,e)
popCale.document.all('monthSel').selectedIndex=nMonth
yearChange()
rewriteCale()
}

//創建萬年歷
popCale = window.createPopup()
CaleBody = popCale.document.body
CaleBody.style.border="outset 1pt #cccccc"
CaleBody.style.fontSize = "9pt"
CaleBody.style.backgroundColor= "#c6c6c6"
CaleBody.style.cursor="hand"

var d=new Date()
var nYear=d.getFullYear()
var nMonth=d.getMonth()
var arMonth=new Array('一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月')
var qtyDay=(new Date(nYear,parseInt(nMonth)+1,1) - new Date(nYear,nMonth,1))/24/3600/1000
var strCale='<table bgcolor="#c6c6c6" id="LiuzxCale" author="liuzxit" border="1"'
strCale+=' bordercolorlight="#0053a6" bordercolordark="#ffffff" cellpadding="1"'
strCale+=' cellspacing="0" style="font-size:9pt;height:170;cursor:hand;">'
strCale+='<th bgcolor="#848484" style="color:#00ffff;border:solid 1pt #848484"'
strCale+=' onclick="parent.changeYM(this,-1)"><<'
strCale+='<th colspan=2 style="border:solid 1pt #c6c6c6">'
strCale+='<select id="yearSel" onchange="parent.changeYM(this)" style="font:9pt;"></select>'
strCale+='<th colspan=3 style="border:solid 1pt #c6c6c6">'
strCale+='<select id="monthSel" onchange="parent.changeYM(this)" style="font:9pt;">'
for (i=0;i<12;i++){
strCale+='<option value='+i+(i==nMonth+1?' selected':'')+'>'+arMonth[i]+'</option>'
}
strCale+='</select><th bgcolor="#848484" style="color:#00ffff;border:solid 1pt #848484"'
strCale+=' onclick="parent.changeYM(this,1)">>></th>'
strCale+='<tr align=center style="color:#ffffff" bgcolor="#000000">'
strCale+='<td width=22 bgcolor="#ff0000">日'
strCale+='<td width=22>一<td width=22>二<td width=22>三<td width=22>四<td width=22>五'
strCale+='<td width=22 bgcolor="#ff0000">六</td></tr>'
var fDay=1-(new Date(nYear,nMonth,1).getDay())
for (i=0;i<42;i++){
if (i % 7==0)strCale+='<tr align=center>'
strCale+='<td style="border:solid 1pt #c6c6c6" onmouseover="parent.caleTDMove(this)"'
strCale+=' onmouseout="parent.caleTDOut(this)" onclick="parent.CaleClick(this)">'
strCale+=(fDay>0&&fDay<=qtyDay?fDay:'')+'</td>'
fDay++
}
strCale+='</tr>'
strCale+='<tr align=center bgcolor="#848484">'
strCale+='<td style="border:1pt solid #848484"> '
strCale+='<td colspan=2 style="border:1pt solid #848484" onmouseover="parent.caleTDMove(this)"'
strCale+=' onmouseout="this.style.borderColor=\'#848484\'"'
strCale+=' onclick="parent.CaleClick(this)">今天'
strCale+='<td style="border:1pt solid #848484"> '
strCale+='<td colspan=2 style="border:1pt solid #848484"'
strCale+=' onclick="this.style.borderColor=\'#848484\';parent.hideCale();"'
strCale+=' onmouseover="parent.caleTDMove(this)"'
strCale+=' onmouseout="this.style.borderColor=\'#848484\'">關閉'
strCale+='<td style="border:1pt solid #848484"> </td><tr>'
strCale+='</table>'
CaleBody.innerHTML=strCale
yearChange()
liuzxit 2003-08-29
  • 打赏
  • 举报
回复
自己的萬年歷和年月歷,可以跨frame
需IE5.5 + 方可使用


========data.htm========
<script language="javascript" src="getYM.js"></script>
<script language="javascript" src="getCale.js"></script>
<input type="text" id="date">
<input type="button" value="click here" onclick="getYM(document.all('date'))">
<input type="text" id="date1">
<input type="button" value="click here" onclick="getDATE(document.all('date1'))">
<br/>adgagagafhafhafdgadfgafg<select><option>asdag</option></select>



===========getYM.js==========
/*name:獲取年月控件
author:liuzxit
design-date:2002/12/19
note:在IE5.5下測試通過
*/

var tarObject
var d=new Date()
sYear=d.getFullYear()
sMonth=d.getMonth() + 1

popup = window.createPopup()
popBody = popup.document.body
popBody.style.border="outset 1pt #cccccc"
popBody.style.fontSize = "9pt"
popBody.style.backgroundColor= "#c6c6c6"
popBody.style.cursor="hand"

var strPop='<table id="yMonth" author="liuzxit" border="1" bordercolorlight="#0053a6" bordercolordark="#ffffff" cellpadding="1" cellspacing="0" style="font-size:9pt;">'
strPop+='<th width="28" bgcolor="#ff0000" onclick="parent.yearRoll(-4)" style="color:#00ffff;"><<'
strPop+='<th width="28" bgcolor="#000000" style="color:#ffffff" onclick="parent.selectClicked(this)">'+(sYear - 2)
strPop+='<th width="28" bgcolor="#000000" style="color:#ffffff" onclick="parent.selectClicked(this)">'+(sYear - 1)
strPop+='<th width="28" bgcolor="#ffffff" style="color:#ff0000" onclick="parent.selectClicked(this)">'+sYear
strPop+='<th width="28" bgcolor="#000000" style="color:#ffffff" onclick="parent.selectClicked(this)">'+(sYear + 1)
strPop+='<th width="28" bgcolor="#ff0000" onclick="parent.yearRoll(4)" style="color:#00ffff;">>></th>'
strPop+='<tr align="center"><td style="border:solid 1pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">1'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">2'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">3'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">4'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">5'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">6</td></tr>'
strPop+='<tr align="center"><td style="border:solid 1pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">7'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">8'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">9'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">10'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">11'
strPop+='<td style="border:solid 2pt #c6c6c6;" onmouseover="parent.tdMove(this)" onmouseout="parent.tdOut(this)" onclick="parent.selectClicked(this)">12</td></tr>'
strPop+='<tr align="center" bgcolor="#848484" style="color:#ffffff"><td colspan=3 onclick="parent.selectClicked(this)">本年月'
strPop+='<td colspan=3 onclick="parent.hidePop();">關閉</td></tr>'
strPop+='</table>'
popBody.innerHTML=strPop

function tdMove(e){e.style.border="outset 2pt #ffffff"}
function tdOut(e){e.style.border="solid 2pt #c6c6c6"}
function yearRoll(n){
var e=popup.document.all('yMonth')
e.cells[1].innerText = parseInt(e.cells[1].innerText) + parseInt(n)
e.cells[2].innerText = parseInt(e.cells[2].innerText) + parseInt(n)
e.cells[3].innerText = parseInt(e.cells[3].innerText) + parseInt(n)
e.cells[4].innerText = parseInt(e.cells[4].innerText) + parseInt(n)
var reg=/(\d{4})(\/)(\d{1,2})/
var r=reg.exec(tarObject.value)
tarObject.value=(parseInt(r[1])+n)+'/'+r[3]
}

function selectClicked(e){
var p=e.parentElement
switch(p.rowIndex){
case 0:for(var i=1;i<5;i++){
p.cells[i].style.backgroundColor='#000000';
p.cells[i].style.color='#ffffff';
}
e.style.backgroundColor='#ffffff';
e.style.color='#ff0000';
tarObject.value=tarObject.value.replace(/(\d{4})(\/)(\d{1,2})/,e.innerText+'/$3');
break;
case 3:tarObject.value=sYear+'/'+sMonth;
popup.hide();
break;
default:
tarObject.value=tarObject.value.replace(/(\d{4})(\/)(\d{1,2})/,'$1/'+e.innerText);
e.style.border="solid 1pt #c6c6c6"
popup.hide();
break;
}
}

function hidePop(){popup.hide()}
function getYM(s){
tarObject=s
if (s.value=='')s.value=sYear+'/'+sMonth

var reg=/(\d{4})(\/)(\d{1,2})/
var r=reg.exec(s.value)
if (r==null){s.value=sYear+'/'+sMonth;
r=reg.exec(s.value)}
var e=popup.document.all('yMonth').rows[0]
for (var i=1;i<5;i++){
if (e.cells[i].style.color=='#ff0000'){
s.value=e.cells[i].innerText+'/'+r[3]
yearRoll(r[1] - e.cells[i].innerText);
break;
}
}
var e=event.srcElement
popup.show(-70,e.clientHeight+5,196,84,e)
}
黑马 2003-08-29
  • 打赏
  • 举报
回复
up
董家文 2003-08-29
  • 打赏
  • 举报
回复
将parent去掉就可以了.
jjkkk 2003-08-15
  • 打赏
  • 举报
回复
日历控件??
能不能借给我参考一下
我也正在写这样的一个程序
lfgoal 2003-08-15
  • 打赏
  • 举报
回复
偶有一个,不知道合不合乎要求,要否?
yanfeng 2003-08-15
  • 打赏
  • 举报
回复
hehe
phaibin 2003-08-15
  • 打赏
  • 举报
回复
梅花雨死哪去了?

87,988

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧