http://blog.sina.com.cn/s/blog_726beebf0100oubr.html
原来这个东东是用.NET控件实现的,但是触发SelectedIndexChanged事件的时候会自动刷页面,用户体验不大好。现在改用JS实现。
HTML部分代码:<body MS_POSITIONING="GridLayout" οnlοad="setup()">
<SELECT id="sy" name="sy" runat="server">
<OPTION selected></OPTION>
</SELECT>年</SPAN></SPAN>
<SELECT id="sm" name="sm" runat="server">
<OPTION selected></OPTION>
</SELECT><SPAN class="normaltext">月</SPAN>
<SELECT id="sd" name="sd" runat="server">
<OPTION selected></OPTION>
</SELECT><SPAN class="normaltext">日</SPAN>
起初我是想通过触发下拉列表的事件,这样写<SELECT id="sy" οnchange="func()" name="sy" runat="server">, 结果怎么也触发不到onchange。最后,所有的触发还是写在setup()里。
JS部分代码:
function setup()
{
initsb();
document.getElementByIdx("sy").οnchange=new Function("sbchange()");
document.getElementByIdx("sm").οnchange=new Function("sbchange()");
}
function initsb()
{
with(document.getElementByIdx("sy")){
length = 0;
now =new Date()
y =now.getFullYear();
for(i=1900;i<y;i++)options[length]=new Option(i,i);
options[0].selected = true;
}
with(document.getElementByIdx("sm")){
length = 0;
for(i=1;i<13;i++)options[length]=new Option(i,i);
options[0].selected = true;
}
with(document.getElementByIdx("sd")){
length = 0;
maxDays = 31;
for(i=1;i<=maxDays;i++)options[length]=new Option(i,i);
options[0].selected = true;
}
}
function sbchange()
{
with(document.getElementByIdx("sd")){
length = 0;
m= document.getElementByIdx("sm").value;
y= document.getElementByIdx("sy").value;
if (m == 4 || m == 6 || m == 9 || m == 11) maxDays = 30;
else if(m == 2) {
if ( y % 4 > 0) maxDays = 28;
else if ( y % 100 == 0 && y % 400 > 0) maxDays = 28;
else maxDays = 29;
}
else maxDays = 31;
for(i=1;i<=maxDays;i++)options[length]=new Option(i,i);
}
}
//sy是select year的缩写,sm是select month的缩写, sd是select day的缩写,sb是 select birthday的缩写