JS实现控制月末日期的下拉列表

来源:互联网 发布:南昌豫章书院知乎 编辑:程序博客网 时间:2024/05/19 23:11

http://blog.sina.com.cn/s/blog_726beebf0100oubr.html


原来这个东东是用.NET控件实现的,但是触发SelectedIndexChanged事件的时候会自动刷页面,用户体验不大好。现在改用JS实现。

HTML部分代码:
<body MS_POSITIONING="GridLayout" onload="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"  onchange="func()" name="sy" runat="server">, 结果怎么也触发不到onchange。最后,所有的触发还是写在setup()里。
 
JS部分代码:
function setup()
{
 initsb(); 
 document.getElementByIdx("sy").onchange=new Function("sbchange()");
 document.getElementByIdx("sm").onchange=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的缩写
0 0