这个算生日日期,因为是从100年前的到现年。

<select id="sel_year"></select>
<select id="sel_month"></select>
<select id="sel_day"></select>
 function dateLinkage(yearId, monthId, dayId, defaultYear, defaultMonth, defaultDay) {
     var objYear = document.getElementById(yearId);
     var objMonth = document.getElementById(monthId);
     var objDay = document.getElementById(dayId);
     var MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
     var year1 = new Date().getFullYear(), year2 = '', year3 = '';
     var month1 = '', month2 = '', month3 = '';
     var day1 = '', day2 = '', day3 = '';

     //生成年
     for (var i = (year1 - 100) ; i < year1; i++) {
         year2 = i == defaultYear ? 'selected="selected"' : '';
         year3 += '<option value="' + i + '" ' + year2 + '>' + i + '</option>';
     }
     objYear.innerHTML = year3;

     //生成月
     for (var i = 1; i <= 12; i++) {
         month1 = i < 10 ? ("0" + i) : i;
         month2 = i == defaultMonth ? 'selected="selected"' : '';
         month3 += '<option value="' + month1 + '" ' + month2 + '>' + month1 + '</option>';
     }
     objMonth.innerHTML = month3;

     //生成日
     for (var i = 1; i <= 31; i++) {
         day1 = i < 10 ? ("0" + i) : i;
         day2 = i == defaultDay ? 'selected="selected"' : '';
         day3 += '<option value="' + day1 + '" ' + day2 + '>' + day1 + '</option>';
     }
     objDay.innerHTML = day3;

     //年份变化事件
     objYear.change(function () {
         var curm = parseInt(objMonth.val());
         var num = MonHead[curm - 1];
         if (IsLeapYear(this.value)) {
             num = 29;
         }
         day3 = '';
         for (var i = 1; i <= num; i++) {
             day1 = i < 10 ? ("0" + i) : i;
             day3 += '<option value="' + day1 + '">' + day1 + '</option>';
         }
         objDay.innerHTML = day3;
     });

     //月份变化事件
     objMonth.change(function () {
         var curm = parseInt(this.value);
         var num = MonHead[curm - 1];
         if (IsLeapYear(objYear.val()) && curm == 2) {
             num = 29;
         }
         day3 = '';
         for (var i = 1; i <= num; i++) {
             day1 = i < 10 ? ("0" + i) : i;
             day3 += '<option value="' + day1 + '">' + day1 + '</option>';
         }
         objDay.innerHTML = day3;
     });

     //判断是否是闰年
     function IsLeapYear(year) {
         return (0 == year % 4 && (year % 100 != 0 || year % 400 == 0));
     }
 }

省市区联动,变量名没有好好想,随意了点。

<select id="sf"> </select>
<select id="cs"> </select>
<select id="qy"> </select>
 function liandong(sfid, csid, qyid, sfDefault, csDefault, qyDefault) {
     var sfbox = document.getElementById(sfid);
     var csbox = document.getElementById(csid);
     var qybox = document.getElementById(qyid);

     var sfinit = function () {
         var list = '';
         for (var i = 0; i < provinceList.length; i++) {
             var cursf = provinceList[i];
             var strSel = cursf.name == sfDefault ? ' selected="selected"' : '';
             list += '<option' + strSel + '>' + cursf.name + '</option>';
         }
         sfbox.innerHTML = list;
         csinit();
     };

     var csinit = function () {
         var list = '';
         var curcslist = provinceList[sfbox.selectedIndex].cityList;
         for (var i = 0; i < curcslist.length; i++) {
             var curcs = curcslist[i];
             var strSel = curcs.name == csDefault ? ' selected="selected"' : '';
             list += '<option' + strSel + '>' + curcs.name + '</option>';
         }
         csbox.innerHTML = list;
         qyinit();
     };

     var qyinit = function () {
         var list = '';
         var curqylist = provinceList[sfbox.selectedIndex].cityList[csbox.selectedIndex].areaList;
         for (var i = 0; i < curqylist.length; i++) {
             var curqy = curqylist[i];
             var strSel = curqy == qyDefault ? ' selected="selected"' : '';
             list += '<option' + strSel + '>' + curqy + '</option>';
         }
         qybox.innerHTML = list;
     };

     sfbox.onchange = function () {
         var list = '';
         var curcslist = provinceList[sfbox.selectedIndex].cityList;
         for (var i = 0; i < curcslist.length; i++) {
             var curcs = curcslist[i];
             list += '<option>' + curcs.name + '</option>';
         }
         csbox.innerHTML = list;
         cschange();
     };

     csbox.onchange = function () {
         cschange();
     };

     var cschange = function () {
         var list = '';
         var curqylist = provinceList[sfbox.selectedIndex].cityList[csbox.selectedIndex].areaList;
         for (var i = 0; i < curqylist.length; i++) {
             var curqy = curqylist[i];
             list += '<option>' + curqy + '</option>';
         }
         qybox.innerHTML = list;
     };

     sfinit();
 }

provinceList的结构:

原生JS 年月日、省市区 三级联动的更多相关文章

  1. 【原生js】原生js的省市区三级联动

    html: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  2. 原生javascript制作省市区三级联动详细教程

    多级联动下拉菜单是前端常见的效果,省市区三级联动又属于其中最典型的案例.多级联动一般都是与数据相关联的,根据数据来生成和修改联动的下拉菜单.完成一个多级联动效果,有助于增强对数据处理的能力. 本实例以 ...

  3. 原生javascript实现省市区三级联动

    腾讯IP分享计划(http://ip.qq.com/)有个现成的三级联动功能,查看源码后发现可以直接使用其单独的JS文件(http://ip.qq.com/js/geo.js). 分析后发现自己需要写 ...

  4. js实现省市区三级联动

    电商平台或者一些网站的个人信息部分,通常会有填写地址的功能.该功能一般分为二级联动(省.市)和三级联动(省.市.区),只需要JavaScript就可以实现. 这里介绍一种很简洁易用的方法.参考地址:h ...

  5. JS(JQuery) 省市区三级联动下拉选择

    引入 area.js /* * 全国三级城市联动 js版 */ function Dsy(){ this.Items = {}; } Dsy.prototype.add = function(id,i ...

  6. angular.js实现省市区三级联动指令

    不多说,直接上代码,一开始搞了好久,最后才弄懂,希望对大家有帮助 1.jade div.col-md-2 select.form-control(ng-options="value.code ...

  7. JS实现年月日三级联动+省市区三级联动+国家省市三级联动

    开篇随笔:最近项目需要用到关于年月日三级联动以及省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例或者只有单纯的js还不完整,却很难找到详细的具体数据(baidu搜索都 ...

  8. vue 引用省市区三级联动(插件)

    vue 用省市区三级联动之傻瓜式教程(复制粘贴即用) npm 下载 npm install v-distpicker --save main.js //引入 省市区三级联动 import Distpi ...

  9. 原生JS实现省市区(县)三级联动选择

    原文地址→看过来 写在前面 前段时间写一个关于天气的东西,里面的省市区(县)城市选择让我很头疼,在网上搜索出来大都是借助插件或者第三方库,感觉这样做代码会很重,所以索性就把几种城市选择的方式实现一遍, ...

  10. 插件 原生js 省市区 三级联动 源码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. TCP/IP模型详解

    上述为TCP/IP的协议模型,主机到网络层又被称为网络接口层,网络互联层又被称为网间层. 网络接口层:实际上,TCP/IP参考模型并没有真正描述这一层的实现,只是要求能够提供给其上层一个访问接口,以便 ...

  2. 【Android自学日记】两种适配器的使用

    ArrayAdapter适配器: (1)用于显示基本的文字内容 (2)基本使用过程:新建适配器---创建或加载数据源---适配器加载数据源---视图加载适配器 ArrayAdapter(上下文,当前L ...

  3. 项目vue2.0仿外卖APP(四)

    组件拆分 先把项目搭建时生成的代码给清了吧 现在static目录下引入reset.css 接着在index.html引入,并且设置<meta> 有时候呢,为了让代码符合我们平时的编码习惯, ...

  4. python之路十八

    1.JS 正则    test   - 判断字符串是否符合规定的正则        rep = /\d+/;        rep.test("asdfoiklfasdf89asdfasdf ...

  5. Python之美--Decorator深入详解

    转自:http://www.cnblogs.com/SeasonLee/archive/2010/04/24/1719444.html 一些往事 在正式进入Decorator话题之前,请允许我讲一个小 ...

  6. iOS9 中的On-Demand Resources,编辑中。。。

    最近要写一个包含许多Html内容的应用,就想能不能通过ios9的这个新特性,缩小一下app的体积,也看看这个新特性和最常使用的用服务器下载资源包有什么不同. 先看官方文档: http://www.co ...

  7. [PHP][REDIS]phpredis 'RedisException' with message 'read error on connection'

    最近一个后台常驻job通过redis的brpop阻塞读取消息时,设置了永不超时 while( $re=$redis->brPop($queue_name,0) ){ } 但是在实际的使用中发现很 ...

  8. cocos2d-js 学习笔记 --安装调试(1)

    目前从国内来看,比较知名的,适合前端程序员使用的游戏框架,基本是 egret 和cocos2d-js;刚好两个框架都学习了下, egret的是最近兴起的一个框架主要使用TypeScript.js语言做 ...

  9. ALS

    最近看了一些关于ALS(肌萎缩性脊髓侧索硬化症)的电视剧和一本ALS患者的生活自述的书. 一次偶然的机会在一部日剧<我所存在的时间>中看到了ALS这种疾病,感觉这就像众病之王--癌症一样, ...

  10. Spring MVC 中 HandlerInterceptorAdapter的使用

    一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理.后处理. Spring MVC的拦截器不仅可实现Filter的所有功能,还可以更精确的控制拦截精度. s ...