用Jquery做一个时间日期选择器

今天我们就用Jquery做一个时间日期选择器,当打开网页时,文本框里面显示的是当前的日期,点击文本框可以出现年、月、日的下拉菜单,并且可以选择,会根据年份的选择判断是否是闰年,从而改变二月的天数,闰年的2月是29天,不是闰年的2月是28天。并且4、6、9、11月份天数是30天,其他月份的天数是31天,这个一定要判断好。

首先我们看看主页面的代码是如何书写的:

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8" />
 5     <title>Document</title>
 6     <script src="dist/js/jquery-1.11.2.min.js" ></script>
 7     <script src="dist/js/bootstrap.min.js" ></script>
 8     <script src="riqi.js"></script>
 9     <link href="dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
10 </head>
11 <body>
12     <input type="text" id="riqi" style="margin-top: 20px; margin-left: 100px;" />
13      
14     <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
15     <div class="modal-dialog">
16         <div class="modal-content">
17             <div class="modal-header">
18                 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
19                 <h4 class="modal-title" id="myModalLabel">日期选择</h4>
20             </div>
21             <div class="modal-body">
22                                     <!--
23                                         作者:511108312@qq.com
24                                         时间:2017-01-09
25                                         描述:里面放内容,点击确定显示
26                                     -->
27                 <select id="nian"><!---->
28                 </select>
29                 <select id="yue"><!---->
30                 </select>
31                 <select id="tian"><!---->
32                 </select>
33             </div>
34             <div class="modal-footer">
35                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
36                 <button type="button" class="btn btn-primary" id="sure">确定</button><!--把我要选的内容扔到文本框里-->
37             </div>
38         </div><!-- /.modal-content -->
39     </div><!-- /.modal -->
40 </div>
41 </body>
42 <script type="text/javascript">
43 //这是加载用的
44 $("#riqi").click(function(){
45         $('#myModal').modal('show');/*当点击文本框的时候,要触发并显示模态框*/
46         LoadNian();//调出的当前年份
47         LoadYue();//调出的当前月份
48         LoadTian();//调出的当前天
49     })
50 //给年月加个事件。这是操作用的
51 $("#sure").click(function(){
52         var nian = $("#nian").val();//取到后吧这三个值扔到文本框里面
53         var yue = $("#yue").val();
54         var tian = $("#tian").val();
55          
56         var str = nian+"-"+yue+"-"+tian;//把年月日拼字符串
57         $("#riqi").val(str);
58         $('#myModal').modal('hide')//选完直接关闭模态框
59     })
60  
61  
62 </script>
63 </html>

之后我们看看引用文件,即js文件的代码是如何写的:riqi.js:

  1 // JavaScript Document
  2 //给年月加个事件要放上面
  3 $(document).ready(function(e) {//当年的选中项变的时候要从新选择下天数
  4     $("#nian").change(function(){
  5             LoadTian();
  6         })
  7     $("#yue").change(function(){//当月份的下拉变化的时候也要从新加载下天数
  8             LoadTian();
  9         })
 10 });
 11  
 12 //加载年份
 13 function LoadNian()
 14 {
 15     var date=new Date;
 16     var year=date.getFullYear(); //获取当前年份
 17      
 18     var str = "";
 19      
 20     for(var i=year-5;i<year+6;i++)//从当前年份减5,当前年份加6、取前5年后5年//i就等于年份
 21     {
 22         if(i==year)//默认定位当前年份
 23         {
 24             str +="<option selected='selected' value='"+i+"'>"+i+"</option>";//默认定位当前年份
 25         }
 26         else
 27         {
 28             str +="<option value='"+i+"'>"+i+"</option>";
 29         }
 30     }
 31      
 32     $("#nian").html(str);//找到ID等于nian的下拉把option扔里面,option等于str
 33      
 34      
 35 }
 36  
 37 //加载月份
 38 function LoadYue()
 39 {
 40     var date=new Date;
 41     var yue=date.getMonth()+1;
 42      
 43     var str = "";
 44      
 45     for(var i=1;i<13;i++)
 46     {
 47         if(i==yue)//当前月份
 48         {
 49             str +="<option selected='selected' value='"+i+"'>"+i+"</option>";
 50         }
 51         else
 52         {
 53             str +="<option value='"+i+"'>"+i+"</option>";
 54         }
 55     }
 56     $("#yue").html(str);
 57 }
 58  
 59 //加载天
 60 function LoadTian()
 61 {
 62     var date=new Date;
 63     var tian = date.getDate();//获取当前天
 64      
 65     var zs = 31; //总天数
 66     var nian = $("#nian").val();//取当前选中的年份
 67     var yue = $("#yue").val();//取当前选中的月份
 68     if(yue == 4 || yue==6 || yue==9 || yue==11)//判断什么情况下不等于31,有2个条件一个是年一个是月||或者当月份等于4,6,9,11等于30天
 69     {
 70         zs = 30;
 71     }
 72     else if(yue==2)//如果是2月
 73     {
 74         if((nian%4==0 && nian%100 !=0) || nian%400==0)//普通年条件能被4整除并且不能被100整除。或者能被400整除就是润年
 75         {
 76             zs = 29;
 77         }
 78         else
 79         {
 80             zs = 28;
 81         }
 82     }
 83      
 84     var str = "";
 85      
 86     for(var i=1;i<zs+1;i++)
 87     {
 88         if(i==tian)
 89         {
 90             str +="<option selected='selected' value='"+i+"'>"+i+"</option>";
 91         }
 92         else
 93         {
 94             str +="<option value='"+i+"'>"+i+"</option>";
 95         }
 96     }
 97      
 98     $("#tian").html(str);
 99      
100 }

这就是我们要写的两个页面的代码了,不是特别复杂,有的人可能会说,如果我们要用的话直接从网上下载就好了,可是如果我们是要在手机客户端运用呢,那我们就要自己写了,这就是做这个的目的,下面我们看看效果:

让我们选择一个日期看看:

看看最终的显示结果是什么:

这就是我们要的效果,如果你还想继续改进可以把时间也加上,上面两个页面的代码都加了详细的注释,如果有什么问题可以在线交流,欢迎大家提出自己的意见和建议。谢谢大家的支持。怎么就是不能发到首页呢?

posted @ 2017-03-14 14:57  小艾—21克的爱  阅读(2397)  评论(0编辑  收藏  举报