js出生日期 年月日级联菜单

现在世界通用的公历(阳历)也经过一个长期演变的过程。我

们先看,公历每个月的日数是固定的:"七前单大,八后双大"。也

就是说,一、三、五、七、八、十、腊月(十二月)是31天,四、

六、九、十一月是30天,只有二月,平年28天,闰年29天。

 

 

ExpandedBlockStart.gif 代码
<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " WebForm1.aspx.cs "  Inherits = " WebApplication1.WebForm1 "   %>

<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< html xmlns = " http://www.w3.org/1999/xhtml "   >
< head runat = " server " >
    
< title >< / title>
< / head>
< body >
    
< form id = " form1 "  runat = " server " >
    
< div >
   
< select name = YYYY id = " YYYY "  onchange = " YYYYMM(this.value) " >
        
< option value = "" > 选择 年 < / option>
     < / select>
     < select name = MM id = " MM "  onchange = " MMDD(this.value) " >
        
< option value = "" > 选择 月 < / option>
     < / select>
     < select name = DD id = " DD " >
        
< option value = "" > 选择 日 < / option>
     < / select>
     < / div>
     < asp:HiddenField ID = " hfValue "  runat = " server "   / >
     < asp:Button ID = " btnSave "  runat = " server "  Text = " 保存 "  onclick = " btnSave_Click "   / >
     < / form>
< / body>
< / html>
< script language = " JavaScript " >  
<!--

    
function  getValue() {
        
var  year  =  document.getElementById( " YYYY " ).options[document.getElementById( " YYYY " ).selectedIndex].value;
        
var  month  =  document.getElementById( " MM " ).options[document.getElementById( " MM " ).selectedIndex].value;
        
var  day  =  document.getElementById( " DD " ).options[document.getElementById( " DD " ).selectedIndex].value;
        document.getElementById(
" hfValue " ).value  =  year + " - " + month + " - " + day;
    }

window.onload
= function () {
    strYYYY 
=  document.form1.YYYY.outerHTML;
    
    strMM 
=  document.form1.MM.outerHTML;
    strDD 
=  document.form1.DD.outerHTML;
    MonHead 
=  [ 31 28 31 30 31 30 31 31 30 31 30 31 ];
    
// 先给年下拉框赋内容
     var  y  =   new  Date().getFullYear();
    
var  str  =  strYYYY.substring( 0 , strYYYY.length  -   9 );
    
    
for  ( var  i  =  (y  -   80 ); i  <  (y  +   2 ); i ++ // 以今年为准,前30年,后30年
    {
        str 
+=   " <option value=' "   +  i  +   " '>  "   +  i  +   "  年 "   +   " </option>\r\n " ;
    }
    document.form1.YYYY.outerHTML 
=  str  +   " </select> " ;
    
// 赋月份的下拉框
     var  str  =  strMM.substring( 0 , strMM.length  -   9 );
    
for  ( var  i  =   1 ; i  <   13 ; i ++ ) {
        str 
+=   " <option value=' "   +  i  +   " '>  "   +  i  +   "  月 "   +   " </option>\r\n " ;
    }
    document.form1.MM.outerHTML 
=  str  +   " </select> " ;
    document.form1.YYYY.value 
=  y;
    document.form1.MM.value 
=   new  Date().getMonth()  +   1 ;
    
var  n  =  MonHead[ new  Date().getMonth()];
    
if  ( new  Date().getMonth()  ==   1   &&  IsPinYear(YYYYvalue)) n ++ ;
    writeDay(n); 
// 赋日期下拉框
    document.form1.DD.value  =   new  Date().getDate();
}
function  YYYYMM(str)  // 年发生变化时日期发生变化(主要是判断闰平年)
{
    
var  MMvalue  =  document.form1.MM.options[document.form1.MM.selectedIndex].value;
    
if  (MMvalue  ==   "" ) {
        DD.outerHTML 
=  strDD;
        
return ;
    }
    
var  n  =  MonHead[MMvalue  -   1 ];
    
if  (MMvalue  ==   2   &&  IsPinYear(str)) n ++ ;
    writeDay(n)
}
function  MMDD(str)  // 月发生变化时日期联动
{
    
var  YYYYvalue  =  document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
    
if  (str  ==   "" ) {
        DD.outerHTML 
=  strDD;
        
return ;
    }
    
var  n  =  MonHead[str  -   1 ];
    
if  (str  ==   2   &&  IsPinYear(YYYYvalue)) n ++ ;
    writeDay(n)
}
function  writeDay(n)  // 据条件写日期的下拉框
{
    
var  s  =  strDD.substring( 0 , strDD.length  -   9 );
    
for  ( var  i  =   1 ; i  <  (n  +   1 ); i ++ ) s  +=   " <option value=' "   +  i  +   " '>  "   +  i  +   "  日 "   +

" </option>\r\n " ;
    document.form1.DD.outerHTML 
=  s  +   " </select> " ;

}
function  IsPinYear(year)  // 判断是否闰平年
{
    
return  ( 0   ==  year  %   4   &&  (year  %   100   !=   0   ||  year  %   400   ==   0 ))
}
// -->
< / script>

 

.aspx.cs

 

ExpandedBlockStart.gif 代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

namespace  WebApplication1
{
    
public   partial   class  WebForm1 : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            btnSave.Attributes.Add(
" onclick " " getValue() " );
        }

        
protected   void  btnSave_Click( object  sender, EventArgs e)
        {
            Response.Write(hfValue.Value);
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值