博主随笔:最近项目需要用到关于年月日三级联动以及省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例或者只有单纯的js还不完整,却很难找到详细的具体数据(baidu搜索都是这样),果断用google,搜出来的博文质量相当高,解释的也非常详细,特此把几个博文整合起来记录记录,用来方便大家(博主不会装高深,简单直接把代码贴出,以供查阅,同时致敬那些分享源码的博主)!!
效果图:
1.jquery实现年月日三级联动
html代码:
<form name="reg_testdate" class="data-birthday">
<select name="YYYY" onChange="YYYYDD(this.value)">
<option value="" selected>请选择 年</option>
</select>
<select name="MM" onChange="MMDD(this.value)">
<option value="" selected>选择 月</option>
</select>
<select name="DD">
<option value="" selected>选择 日</option>
</select>
</form>
js代码:
function YYYYMMDDstart(){
MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
//先给年下拉框赋内容
var y = new Date().getFullYear();
for (var i = (y-118); i < (y+30); i++) //以今年为准,前30年,后30年
document.reg_testdate.YYYY.options.add(new Option(" "+ i +" 年", i));
//赋月份的下拉框
for (var i = 1; i < 13; i++)
document.reg_testdate.MM.options.add(new Option(" " + i + " 月", i));
document.reg_testdate.YYYY.value = y;
document.reg_testdate.MM.value = new Date().getMonth() + 1;
var n = MonHead[new Date().getMonth()];
if (new Date().getMonth() ==1 && IsPinYear(YYYYvalue)) n++;
writeDay(n); //赋日期下拉框Author:meizz
document.reg_testdate.DD.value = new Date().getDate();
}
if(document.attachEvent)
window.attachEvent("onload", YYYYMMDDstart);
else
window.addEventListener('load', YYYYMMDDstart, false);
function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年)
{
var MMvalue = document.reg_testdate.MM.options[document.reg_testdate.MM.selectedIndex].value;
if (MMvalue == ""){ var e = document.reg_testdate.DD; optionsClear(e); return;}
var n = MonHead[MMvalue - 1];
if (MMvalue ==2 && IsPinYear(str)) n++;
writeDay(n)
}
function MMDD(str) //月发生变化时日期联动
{
var YYYYvalue = document.reg_testdate.YYYY.options[document.reg_testdate.YYYY.selectedIndex].value;
if (YYYYvalue == ""){ var e = document.reg_testdate.DD; optionsClear(e); return;}
var n = MonHead[str - 1];
if (str ==2 && IsPinYear(YYYYvalue)) n++;
writeDay(n)
}
function writeDay(n) //据条件写日期的下拉框
{
var e = document.reg_testdate.DD; optionsClear(e);
for (var i=1; i<(n+1); i++)
e.options.add(new Option(" "+ i + " 日", i));
}
function IsPinYear(year)//判断是否闰平年
{
return(0 == year%4 && (year%100 !=0 || year%400 == 0));
}
function optionsClear(e)
{
e.options.length = 1;
}
2.jquery实现年月日三级联动
<script src="js/jquery-3.3.1.min.js"></script> //这个不用多说,要么自己去官网下载,要么就用HTTP地址
<script language="javascript" src="js/jquery.cityselect.js"></script> //这个就是网盘下载的js文件,自己放到文件夹内
<div id="city_4">
<select class="prov"></select>
<select class="city" disabled="disabled"></select>
<select class="dist" disabled="disabled"></select>
</div>
$(function () {
$("#city_4").citySelect({
prov: "广东",
city: "深圳",
dist: "福田区",
nodata: "none"
});
})