日期选择器(Query+bootstrap和js两种方式)

摘要:
日期选择用于在下拉列表中选择年、月和日。显示年份之前和之后的五年,12个月和当天有30、31、29和28天。js模式中的日期选择会随着月份而改变。(1) 首先,有三个下拉列表。单击年、月和日以显示列表中的内容,这是为了添加“Click event”onclickyear˂/select

日期选择是在下拉列表中选择年、月、日,年显示前后的五年,12个月,日就是有30、31、29、28天的区别,随着月份的变而变

一、js方式的日期选择

(1)首先就是三个下拉列表了,点击年、月、日显示列表中的内容,这样就是要给这三个列表加“点击事件”onclick

<select   onclick="biantian()"></select>年
<select   onclick="biantian()"></select>月
<select id="tian"></select>日

也就是这样的效果:

日期选择器(Query+bootstrap和js两种方式)第1张

(2)写js方法

注意:年月日三个选择框,那么就是要写三个方法

填充年的方法

function FillNian()
{
  var b = new Date();  //取当前时间
  var nian = parseInt(b.getFullYear());  //取当前年份
	
  var str = "";
	
  for(var i=nian-5;i<nian+6;i++)  //显示前后的5年
  {
    //判断年的当前选中,选中当前的年份     if( i==nian)     {       str = str+"<option selected='selected' value='"+i+"' >"+i+"</option>";     }     else     {       str = str+"<option value='"+i+"'>"+i+"</option>";     }   }   //给id名是nian的下拉菜单中加添加html,html就是上面写到的str   document.getElementById("nian").innerHTML = str; }

写完了年方法,记得调用一下,查看效果如下:  

日期选择器(Query+bootstrap和js两种方式)第2张

(3)填充月的方法:这个和年的也是差不多,没有什么大的变化

function FillYue()
{
  var b = new Date();  //取当前时间
	var yue = parseInt(b.getMonth()+1);  //取当前月份
	
	var str = "";
	for(var i=1;i<13;i++)  //循环;月份是从1开始,一年12个月,小于13
	{
         //判断当前月份的选中 if( i==yue) {   str = str+"<option selected='selected' value='"+i+"' >"+i+"</option>"; } else {   str = str+"<option value='"+i+"'>"+i+"</option>"; } } document.getElementById("yue").innerHTML = str; //将str值写到id名是yue的下拉列表中 }

写完了月的方法,记得调用一下,查看效果如下: 

日期选择器(Query+bootstrap和js两种方式)第3张

(3)填充天的方法:和年和月的差不多,不一样的就是月份不一样,天数也是不一样的

function FillTian()
{
    var b = new Date(); 
    var tian = parseInt(b.getDate());  //获取当前天数
	
    var yue = document.getElementById("yue").value;  //找到月的值
    var nian = document.getElementById("nian").value;  //找到年的值
    var ts = 31;
	
    //30号的月数:月数是4、6、9、11时,天数是30天
    if(yue==4 || yue==6 || yue==9 || yue==11)
    {
	ts=30;
    }
	
    //2月不同年的天
    if(yue==2)
    {
     //被4整除,同时不被100整除;或是被400整除的年 if((nian%4==0 && nian%100 != 0) || nian%400==0) { ts = 29; //闰年 } else { ts = 28; //平年 } } var str = ""; for(var i=1;i<ts+1;i++) {
     //判断天数是否选中 if( i==tian) { str = str+"<option selected='selected' value='"+i+"' >"+i+"</option>"; } else { str = str+"<option value='"+i+"'>"+i+"</option>"; } } document.getElementById("tian").innerHTML = str; //将str的值给id名是天的下拉列表 }

写完了日的方法,记得调用一下,查看整体效果如下:  

日期选择器(Query+bootstrap和js两种方式)第4张     闰年如下:

日期选择器(Query+bootstrap和js两种方式)第5张

二、Query+bootstrap的日期选择器

想用jQuery和bootstrap,必须引入这两个的包

<script src="http://t.zoukankan.com/jquery-1.11.2.min.js"></script>
<script src="http://t.zoukankan.com/dist/js/bootstrap.min.js"></script>
<script src="http://t.zoukankan.com/riqishijian.js"></script>
<link href="http://t.zoukankan.com/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css" />

进入正题:点击文本框会弹出个日期选择的窗口,所以

(1)写个提示字,并且写个文本框

<input type="text"   />  //最终显示的日期时间的地方,文本框起个名字对其加事件

(2)写bootstrap的模态框,直接引用就可以

<div     tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
       //标题部分 <div class="modal-header"> <button type="button" data-dismiss="modal" aria-hidden="true">×</button> <h4 id="myModalLabel">日期选择</h4> //显示标题的地方 </div>
       //主体部分 <div class="modal-body"> <select id="nian"> //年的下拉列表 </select> <select id="yue"> //月的下拉列表 </select> <select id="tian"> //天的下拉列表 </select> </div>
       //最后部分 <div class="modal-footer"> <button type="button" data-dismiss="modal">关闭</button> <button type="button" id="sure">确定</button> //确定按钮也要是加事件的,所以也要起个名字 </div> </div><!-- /.modal-content --> </div><!-- /.modal --> </div>

(3)考虑下怎么显示这个弹出框?

单击显示日期的文本框再弹出选择框,那么就要对文本框设置事件

$("#riqi").click(function(){
    $('#myModal').modal('show');  //bootstrap直接提示怎么显示弹窗,直接拿过来用就可以	
})

看下效果:

日期选择器(Query+bootstrap和js两种方式)第6张

(4)写jQuery页面:年月日的方法其实和js的写法差不多,就是样式和取赋方式和js有点区别,其他的没有什么可以注意的

当然,写完了jQuery方法,记得用的时候调用一下

jQuery页面中的年、月、日的方法:和js中的逻辑都是一样的(不多说)

//加载年份
function LoadNian()
{
	var date=new Date;  //和js的方法一样取当前时间和年份
 	var year=date.getFullYear(); 
	
	var str = "";
	
	for(var i=year-5;i<year+6;i++)
	{
         //判断当前年是否选中 if(i==year) {   str +="<option selected='selected' value='"+i+"'>"+i+"</option>"; } else {   str +="<option value='"+i+"'>"+i+"</option>"; } } $("#nian").html(str); //也是将值写到年的下拉列表中 }
//加载月份
function LoadYue()
{
     //和js中的月份的逻辑都是一样的 var date=new Date; var yue=date.getMonth()+1; //取到当前月份 var str = ""; for(var i=1;i<13;i++) {
         //判断月份是否选中 if(i==yue) {   str +="<option selected='selected' value='"+i+"'>"+i+"</option>"; } else {   str +="<option value='"+i+"'>"+i+"</option>"; } } $("#yue").html(str); }
//加载天
function LoadTian()
{
     //和js中的逻辑是一样的 var date=new Date; var tian = date.getDate(); //取到天数 var zs = 31; //总天数 var nian = $("#nian").val(); //取到年的值 var yue = $("#yue").val(); //取到月的值

     //也是天数是30天的月份 if(yue == 4 || yue==6 || yue==9 || yue==11) {   zs = 30; } else if(yue==2) {
         //判断闰月的 if((nian%4==0 && nian%100 !=0) || nian%400==0) {   zs = 29; } else {   zs = 28; } } var str = ""; for(var i=1;i<zs+1;i++) {
         //判断天数是否选中 if(i==tian) { str +="<option selected='selected' value='"+i+"'>"+i+"</option>"; } else { str +="<option value='"+i+"'>"+i+"</option>"; } } $("#tian").html(str); }

最后就是要选择哪一年,后面的月和日都要变,那么就要在最开始写

$(document).ready(function(e) {
    $("#nian").change(function(){  //选年改变天
		  LoadTian();
		})
	$("#yue").change(function(){  //选月改变天
		  LoadTian();
		})
});

(5)把选中的年月日的值传入文本框中

$("#sure").click(function(){
	var nian = $("#nian").val();  //取到年的值
	var yue = $("#yue").val();   //取到月份的值
	var tian = $("#tian").val();  //取到天数的值
		
	var str = nian+"-"+yue+"-"+tian; //拼接字符串显示年月日
	$("#riqi").val(str);  //将值放到riqi的文本框中
	$('#myModal').modal('hide')  //将弹窗关闭
})

这样选择器就结束了,看下整体效果:

单击文本框,弹出日期选择框

日期选择器(Query+bootstrap和js两种方式)第7张

选择一个日期,单击确定按钮

日期选择器(Query+bootstrap和js两种方式)第8张

另外:也可以除了日期,也可以加上默认时间

$("#sure").click(function(){
	var nian = $("#nian").val();  //取到年的值
	var yue = $("#yue").val();   //取到月份的值
	var tian = $("#tian").val();  //取到天数的值

	var d = new Date();
	var str = nian+"-"+yue+"-"+tian+" "+d.getHours()+":"+d.getMinutes()+":"+d.getDate() ; //拼接字符串显示年月日,还有时间
	$("#riqi").val(str);  //将值放到riqi的文本框中
	$('#myModal').modal('hide')  //将弹窗关闭
})

选择效果,后面的时间是自动默认显示的:

日期选择器(Query+bootstrap和js两种方式)第9张

日期选择器两种方法都可以使用。

免责声明:文章转载自《日期选择器(Query+bootstrap和js两种方式)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于UEFI和GPT模式下U盘安装windows8.1和Linux双启动教程HttpRequest.getSession用法简记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQLServer 的存储过程与java交互

一、   存储过程简介 Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。 存储过程相对于其他的数据库访问方法有以下的优点:    (1)重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。     (2)...

js中的枚举

在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。可枚举性决定了这个属性能否被for…in查找遍历到。js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等 1.for…in循环可以枚举(遍历)出对象本身具有的属性,通过Object.defineProperty()方...

MySQL学习笔记:生成一个时间序列

  今天遇到一个需求是生成以下表格的数据,一整天24小时,每秒一行数据。      寻找颇旧,找到另外两个实现的例子,暂且学习一翻。另一个见另外一篇。 SELECT DATE_ADD('2018-01-01',INTERVAL @i := @i + 1 DAY) AS DATE FROM (SELECT 1 UNION ALL SELECT 1 UNION...

Oracle子查询相关内容(包含TOP-N查询和分页查询)

本节介绍Oracle子查询的相关内容: 实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下: 一、子查询 1、概念:嵌入在一个查询中的另一个查询语句,也就是说一个查询作为另一个查询的条件,这个查询称为子查询。 那么可以使用子查询的位置有select后面、from后面、where后面以及having后面。 2、分类:(1...

DevExpress源码编译总结

独家提供完整可编译sln文件,本篇文章内容包括基础知识(GAC、程序集强签名、友元程序集)、编译过程、注册GAC、添加工具箱、多语言支持、运行时和设计时调试 源码地址链接:http://pan.baidu.com/s/1miNCHug密码:rlyr关于编译源码,前前后后折腾了太久,自己折腾,到官网折腾,到DXPER折腾,今天,总算有个结局了 编译环...

angularjs 路由 异步加载js

angularjs 异步加载js 有两种方法 第一种 使用$q 和 requireJS 加载 这个问题 首要出现 在 当我 把require 引入 项目中是,希望做到 点击路由时加载相应的页面html和 js. 起初我是将 route 的 controller 设置为 require(‘controller.js’) 来 异步加载, 当然,问题是不可能这么...