var reg=/(\d{4})(\/)(\d{1,2})/ var r=reg.exec(s.value) if (r!=null){ 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] yearChange(r[1] - e.cells[i].innerText); break; } } } var e=event.srcElement popup.show(e.pixelLeft,e.clientHeight+5,196,84,e) }
<select name=cMonth></select>月<SCRIPT LANGUAGE=javascript>
<!--
function addItem(obj,text,value)
{
var o=document.createElement("option");
o.text=text;
o.value=value;
obj.add(o);
}var startY=2002;
var startM=1;
for(var i=0;i<50;i++){
cY=startY-i;
addItem(document.all.cYear,cY.toString(),cY.toString());
}
for(var i=0;i<12;i++){
cM=startM+i;
addItem(document.all.cMonth,cM.toString(),cM.toString());
}
//-->
</SCRIPT>
<script>
function getYM(s){
var strFeatures = "dialogWidth=180px;dialogHeight=135px;center=yes;help=no;scroll=no";
var sDate = showModalDialog("getYM.htm","",strFeatures);
if (sDate)s.value = sDate
}
</script>
<input type=text name="date">
<input type=button value="......" onclick="getYM(document.all('date'))">
getYM.htm=====================================
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<script language="javascript">
var d=new Date()
sYear=d.getFullYear()
sMonth=d.getMonth() + 1function ini(){
var t=document.all('yMonth')
t.rows[0].cells[1].innerText= sYear - 1
t.rows[0].cells[2].innerText= sYear
t.rows[0].cells[2].className="thSelect"
t.rows[0].cells[2].id="downTh"
t.rows[0].cells[3].innerText= sYear + 1
t.rows[0].cells[4].innerText= sYear + 2
if (sMonth>5){
t.rows[2].cells[sMonth - 7].className="tdDown"
t.rows[2].cells[sMonth - 7].id="downTd"
}
else{
t.rows[1].cells[sMonth - 1].className="tdDown"
t.rows[1].cells[sMonth - 1].id="downTd"
}
}function yearChange(n){
var e=event.srcElement.parentElement
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)
sYear = parseInt(sYear) + parseInt(n)
}function getYM(){
var d=new Date()
var y=d.getFullYear()
var m=d.getMonth()
window.returnValue = y+'/'+m;
window.close();
}</script>
<style>
.{font:10pt;cursor:hand;margin:0pt;}
th.thYear{color:#ffffff;background-color:#000000;}
th.thSelect{color:#ff0000;back-ground:#000000;}
td.tdMonth{text-align:center;border:2pt solid #c6c6c6;}
td.tdMove{text-align:center;border: 2px outset rgb(255,255,255)}
td.tdDown{text-align:center;border: 2px inset rgb(255,255,255);background-color:#ffffff;}
</style>
</head><BODY onload="ini()">
<table id="yMonth" name="yMonth" border="1" bordercolorlight="#0053a6" bordercolordark="#ffffff" cellpadding="1" cellspacing="0">
<th width="28" bgcolor="#ff0000" onclick="yearChange(-4)" style="color:#00ffff;"><<
<th width="28" class="thYear">2000
<th width="28" class="thYear">2001
<th width="28" class="thYear">2002
<th width="28" class="thYear">2003
<th width="28" bgcolor="#ff0000" onclick="yearChange(4)" style="color:#00ffff;">>></th>
<tr bgcolor="#c6c6c6">
<td class="tdMonth">1</td>
<td class="tdMonth">2
<td class="tdMonth">3
<td class="tdMonth">4
<td class="tdMonth">5
<td class="tdMonth">6</td></tr>
<tr align="center" bgcolor="#c6c6c6">
<td class="tdMonth">7
<td class="tdMonth">8
<td class="tdMonth">9
<td class="tdMonth">10
<td class="tdMonth">11
<td class="tdMonth">12</td></tr>
<tr align="center" bgcolor="#848484" style="color:#ffffff">
<td colspan=2 onclick="getYM()">本年月
<td colspan=2 onclick="window.returnValue = sYear + '/' + sMonth;window.close();">確定
<td colspan=2 onclick="window.close();">返回</td>
</tr>
</table>
</body>
<script>
function yMonth.onmouseover(){
var e=event.srcElement;
if (e.className=="tdMonth"){
e.className="tdMove"
}
}function yMonth.onmouseout(){
var e=event.srcElement;
if (e.className=="tdMove"){
e.className="tdMonth"
}
}function yMonth.onmousedown(){
var e=event.srcElement;
if (e.className=="tdMove"){
e.className="tdDown"
var s=document.all('downTd')
s.className="tdMonth"
s.id=''
e.id="downTd"
sMonth=e.innerText
}
if (e.className=="thYear"){
e.className="thSelect"
var s=document.all('downTh')
s.className="thYear"
s.id=''
e.id="downTh"
sYear=e.innerText
}
}
</script>
</html>
to liuzxit(升职无希望﹐盼望加工资) :
你的好东西,我试过了,感觉还不错,但是好象选择之后,不能写到文本框去。另外,你能不能提供象梅花雨那种,点击图片或者按钮之后,才出现月历呢。谢谢。
分不够,再加!!!1
正打算把萬年歷也改過來﹐以后給你吧getYM.htm============
<script language="javascript" src="getYM.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="getYM(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() + 1popup = 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.yearChange(-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.yearChange(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=strPopfunction tdMove(e){e.style.border="outset 2pt #ffffff"}
function tdOut(e){e.style.border="solid 2pt #c6c6c6"}
function yearChange(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){
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]
yearChange(r[1] - e.cells[i].innerText);
break;
}
}
}
var e=event.srcElement
popup.show(e.pixelLeft,e.clientHeight+5,196,84,e)
}
改一下:把e.pixelLeft改成-70或其他數字
to liuzxit(升职无希望﹐盼望加工资) :你给的那个我看过了,好象不是什么控件啊?只是点击按钮把日期写到文本框而已,要出现那种月历选择界面才好啊。有方法嘛?
用户控件,还是自定义控件