基于javascript bootstrap实现生日日期联动选择


Posted in Javascript onApril 07, 2016

本文实例为大家分享了js实现日期联动选择的相关代码,适用于生日的选择,供大家参考,具体内容如下

实现目标:年月日三个select 输入框,以及一个hidden的input,通过js获取input的值,如果有值切是日期格式,年月日select为input中的时间。否则为空。年默认区间段为1900年到当今年份

本人使用了bootstrap,class请参照bootstrap的相关说明

下面是html 内容:

<div class="col-sm-9">
     <label class="checkbox-inline">
      <select node-type="birthday_year" name="birthday_y" id="birthday_y">
      <option value=""></option>
 
      </select><span>年</span>
     </label>
     <label class="checkbox-inline">
      <select node-type="birthday_month" name="birthday_m" id="birthday_m">
      <option value=""></option>
 
      </select><span>月</span>
     </label>
     <label class="checkbox-inline">
      <select node-type="birthday_month" name="birthday_d" id="birthday_d">
      <option value=""></option>
 
      </select><span>日</span>
     </label>
     <input type="hidden" name="birth" id="birth" value="2016/2/12">
     <label class='checkbox-inline text-warning hidden' id="birth_error_info"><i class='fa fa-warning'>请输入完整生日</i></label>
     </div>

下面是js 的实现:

//设置生日的转换和获取
 
 
 var date=new Date();
 var year=date.getFullYear();
 for(var i=year;i>=1900;i--){
 $("#birthday_y").append("<option value="+i+" label="+i+">"+i+"</option>");
 }
 
 
 
 
 $('#birthday_y').change(function(){
 var birth_year=$('#birthday_y').val();
 if(birth_year!=""){
  var birth_month=$('#birthday_m').val();
  if(birth_month!=""){
  if(birth_month=="2"){
   if((birth_year%4==0 && birth_year%100!=0) || (birth_year%400==0)){
   $("#birthday_d").append("<option value=" + 29 + " label=" + 29 + ">" + 29 + "</option>");
   }else{
   $("#birthday_d option[value='29']").remove();
   }
  }
  }else {
  for (var i = 1; i <= 12; i++) {
   $("#birthday_m").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
  }
  }
 }else{
  $("#birthday_m").html("<option value=''></option>");
  $("#birthday_d").html("<option value=''></option>");
 }
 checkBirthday();
 });
 $('#birthday_m').change(function(){
 var birth_year=$('#birthday_y').val();
 var birth_month=this.value;
 var birth_day=$('#birthday_d').val();
 if(birth_month!=""){
  switch (birth_month){
  case "1":case "3":case "5":case "7":case "8":case "10":case "12":
  if(birth_day=="") {
   $("#birthday_d").empty();
   $("#birthday_d").append("<option value='' ></option>");
   for (var i = 1; i <= 31; i++) {
   $("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
   }
  }else {
   switch ($("#birthday_d option:last").attr("value")){
   case "28":$("#birthday_d").append("<option value=" + 29 + " >" + 29 + "</option>");
   case "29":$("#birthday_d").append("<option value=" + 30 + " >" + 30 + "</option>");
    $("#birthday_d").append("<option value=" + 31 + " >" + 31 + "</option>");break;
   case "30":$("#birthday_d").append("<option value=" + 31 + " >" + 31 + "</option>");
    break;
   default :break;
 
   }
  }
  break;
  case "4":case "6":case "9": case "11":
  if(birth_day=="") {
   $("#birthday_d").empty();
   $("#birthday_d").append("<option value='' ></option>");
   for (var i = 1; i <= 30; i++) {
   $("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
   }
  }else{
   switch ($("#birthday_d option:last").attr("value")){
   case "28":$("#birthday_d").append("<option value=" + 29 + " >" + 29 + "</option>");
   case "29":$("#birthday_d").append("<option value=" + 30 + " >" + 30 + "</option>");
   case "31":$("#birthday_d option[value='31']").remove();
    break;
   default :break;
 
   }
  }
  break;
  case "2":
   if(birth_day==""){
   if((birth_year%4==0 && birth_year%100!=0) || (birth_year%400==0)){
    for(var i=1;i<=29;i++){
    $("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
    }
   }else{
    for(var i=1;i<=28;i++){
    $("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
    }
   }}else{
   $("#birthday_d option[value='31']").remove();
   $("#birthday_d option[value='30']").remove();
   if((birth_year%4==0 && birth_year%100!=0) || (birth_year%400==0)){
 
   }else{
    $("#birthday_d option[value='29']").remove();
   }
   }
   break;
  default :break;
  }
 
 
 }
 checkBirthday();
 });
 
 $('#birthday_d').change(function() {
  checkBirthday();
 }
 );
 $('#birthday_d').focus(
 function(){
  if($('#birthday_m').val()==""){
  $("#birthday_d").empty();
  $("#birthday_d").append("<option value='' ></option>");
  }
 }
 );
 
 //根据后台提供的数据,填充用户的值
 var birth_value=$('#birth').val();
 if(birth_value!="") {
 var date1 = new Date(birth_value);
 var b_year=date1.getFullYear();
 var b_month=date1.getMonth()+1;
 var b_day=date1.getDate();
 $("#birthday_y").find("option[value='"+b_year+"']").attr("selected","selected");
 if($('#birthday_y').val()!="") {
  for (var i = 1; i <= 12; i++) {
  $("#birthday_m").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
  }
 }
 $("#birthday_m").find("option[value='"+b_month+"']").attr("selected","selected");
 switch (b_month){
  case 1:case 3:case 5:case 7:case 8:case 10:case 12:
  for (var i = 1; i <= 31; i++) {
  $("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
  }
  break;
  case 4:case 6:case 9: case 11:
 
  $("#birthday_d").append("<option value='' ></option>");
  for (var i = 1; i <= 30; i++) {
  $("#birthday_d").append("<option value=" + i + " label=" + i + ">" + i + "</option>");
  }
  break;
  case 2:
  if((b_year%4==0 && b_year%100!=0) || (b_year%400==0)){
   for(var i=1;i<=29;i++){
   $("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
   }
  }else{
   for(var i=1;i<=28;i++){
   $("#birthday_d").append("<option value="+i+" label="+i+">"+i+"</option>");
   }
  }
  break;
  default :break;
 }
 $("#birthday_d").find("option[value='"+b_day+"']").attr("selected","selected");
 }
 
//验证生日是否输入完整
 function checkBirthday(){
 var b_year= $('#birthday_y').val();
 var b_month=$('#birthday_m').val();
 var b_day=$('#birthday_d').val();
 if(b_year!=""&&b_month!=""&&b_day!=""){
  $('#birth').val(b_year+"-"+b_month+"-"+b_day);
  $('#birth_error_info').addClass("hidden");
 }else{
  $('#birth').val("");
  $('#birth_error_info').removeClass("hidden");
 }
 }

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
JavaScript中的数据类型转换方法小结
Oct 26 Javascript
浅谈js中对象的使用
Aug 11 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
Oct 25 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
Jun 19 Javascript
基于js中document.cookie全面解析
Sep 14 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
浅谈vue中.vue文件解析流程
Apr 24 Javascript
javascript实现点亮灯泡特效示例
Oct 15 Javascript
JavaScript实现留言板案例
Mar 17 Javascript
原生js制作日历控件实例分享
Apr 06 #Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
Apr 06 #Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
Apr 06 #Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 #Javascript
jQuery隐藏和显示效果实现
Apr 06 #Javascript
JS动态改变浏览器标题的方法
Apr 06 #Javascript
jQuery ajax提交Form表单实例(附demo源码)
Apr 06 #Javascript
You might like
德劲1102收音机的打理维修案例
2021/03/02 无线电
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python3 爬取图片的实例代码
2018/11/06 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
python import 上级目录的导入
2020/11/03 Python
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
应届医学毕业生求职信分享
2013/12/02 职场文书
产品生产计划书
2014/05/07 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
卖房协议书样本
2014/10/30 职场文书
2014年部门工作总结
2014/11/12 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL