使用方法:
<!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" lang="en" dir="ltr">
<head>
<title>SELECT BIRTHDAY by itbbs.cn</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/datefield.js"></script>
<script type="text/javascript">
$(function () {
new DateField( 'birthdate' );
});
</script>
</head>
<body>
<form id="joinForm" method="post" action="" name="joinForm" enctype="multipart/form-data">
<div class="birthdate">
<input name="birthdate" id="birthdate" type="hidden" />
<select name="birthdate_year" type="text"><option value="">Year</option><option value="1992">1992</option><option value="1991">1991</option><option value="1990">1990</option><option value="1989">1989</option><option value="1988">1988</option><option value="1987">1987</option><option value="1986">1986</option><option value="1985">1985</option><option value="1984" selected>1984</option><option value="1983">1983</option><option value="1982">1982</option><option value="1981">1981</option><option value="1980">1980</option><option value="1979">1979</option><option value="1978">1978</option><option value="1977">1977</option><option value="1976">1976</option><option value="1975">1975</option><option value="1974">1974</option><option value="1973">1973</option><option value="1972">1972</option><option value="1971">1971</option><option value="1970">1970</option><option value="1969">1969</option><option value="1968">1968</option><option value="1967">1967</option><option value="1966">1966</option><option value="1965">1965</option><option value="1964">1964</option><option value="1963">1963</option><option value="1962">1962</option><option value="1961">1961</option><option value="1960">1960</option><option value="1959">1959</option><option value="1958">1958</option><option value="1957">1957</option><option value="1956">1956</option><option value="1955">1955</option><option value="1954">1954</option><option value="1953">1953</option><option value="1952">1952</option><option value="1951">1951</option><option value="1950">1950</option><option value="1949">1949</option><option value="1948">1948</option><option value="1947">1947</option><option value="1946">1946</option><option value="1945">1945</option><option value="1944">1944</option><option value="1943">1943</option><option value="1942">1942</option><option value="1941">1941</option><option value="1940">1940</option><option value="1939">1939</option><option value="1938">1938</option><option value="1937">1937</option><option value="1936">1936</option><option value="1935">1935</option><option value="1934">1934</option><option value="1933">1933</option><option value="1932">1932</option><option value="1931">1931</option><option value="1930">1930</option></select>
<select name="birthdate_month" type="text"><option value="">Month</option><option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4" selected>Apr</option><option value="5">May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option></select>
<select name="birthdate_day" type="text"><option value="">Day</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21" selected>21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>
</div>
</form>
</body>
</html>
datefield.js 源文件:
var DateField = function( $name )
{
var self = this;
var $cont = $("div[class='" + $name + "']");
var $hidden = $cont.find("input[name='" + $name + "']");
this.day = $cont.find("select[name='" + $name + "_day']");
this.month = $cont.find("select[name='" + $name + "_month']");
this.year = $cont.find("select[name='" + $name + "_year']");
this.dayFirstOption = self.day.find('option[value=\'\']');
this.day.change( function()
{
self.updateValue();
});
this.year.change( function()
{
self.changeMonth();
});
this.month.change( function()
{
self.changeMonth();
});
this.changeMonth = function()
{
if( self.month.val() != '' & self.year.val() != '' )
{
var $dayVal = 0;
if ( self.day.val() != '');
{
$dayVal = self.day.val();
}
var $monthVal = self.month.val(); // parse date into variables
var $yearVal = self.year.val();
if ( $monthVal < 1 )
{
self.month.val(1);
}
if( $monthVal > 12 )
{
self.month.val(12);
}
if ( $monthVal==4 || $monthVal==6 || $monthVal==9 || $monthVal==11 )
{
self.updateDays($dayVal, 30);
}
else if ( $monthVal == 2 )
{
var isleap = ($yearVal % 4 == 0 && ($yearVal % 100 != 0 || $yearVal % 400 == 0));
if ( isleap )
{
self.updateDays($dayVal, 29);
}
else
{
self.updateDays($dayVal, 28);
}
}
else
{
self.updateDays($dayVal, 31);
}
}
self.updateValue();
}
this.updateDays = function( $dayValue, $daysCount )
{
if( self.day.find('option[value!=""]').size() == $daysCount )
{
return;
}
self.day.find('option[value!=\'\']').remove();
if( !$dayValue )
{
$dayValue = '';
}
else if ( $dayValue > $daysCount )
{
$dayValue = $daysCount;
}
for ( var i=1; i<= $daysCount; i++ )
{
var $option = this.dayFirstOption.clone();
$option.text(i);
$option.val(i);
if ( $dayValue == i )
{
$option.attr('selected', 'selected');
}
self.day.append($option);
}
}
this.updateValue = function()
{
if( self.day.val() != '' && self.month.val() != '' && self.year.val() != '' )
{
$hidden.val( self.year.val() + '/' + self.month.val() + '/' + self.day.val() );
}
else
{
$hidden.val('');
}
}
}












