利用Query+bootstrap和js两种方式实现日期选择器


Posted in Javascript onJanuary 10, 2017

前言

所谓日期选择是在下拉列表中选择年、月、日,年显示前后的五年,12个月,日就是有30、31、29、28天的区别,随着月份的变而变,本文介绍了利用Query+bootstrap和js实现日期选择器的两种方法,下面来一起学习学习吧。

一、js方式的日期选择

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

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

也就是这样的效果:

利用Query+bootstrap和js两种方式实现日期选择器

(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年

{<br>

//判断年的当前选中,选中当前的年份


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两种方式实现日期选择器

(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
 {<br>



 //判断当前月份的选中
 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)填充天的方法:和年和月的差不多,不一样的就是月份不一样,天数也是不一样的

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)
 {<br>
 //被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++)
 {<br>

 //判断天数是否选中
 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两种方式实现日期选择器 

闰年如下:

利用Query+bootstrap和js两种方式实现日期选择器

二、Query+bootstrap的日期选择器

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

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

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

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

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

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

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 <div class="modal-dialog">
  <div class="modal-content"><br>

 //标题部分
   <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h4 class="modal-title" id="myModalLabel">日期选择</h4> //显示标题的地方
   </div><br>


 //主体部分
   <div class="modal-body">
    <select id="nian"> //年的下拉列表
    </select>
    <select id="yue"> //月的下拉列表
    </select>
    <select id="tian"> //天的下拉列表
    </select>
   </div><br>


 //最后部分
   <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
    <button type="button" class="btn btn-primary" id="sure">确定</button> //确定按钮也要是加事件的,所以也要起个名字
   </div>
  </div><!-- /.modal-content -->
 </div><!-- /.modal -->
</div>

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

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

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

看下效果:

利用Query+bootstrap和js两种方式实现日期选择器

(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++)
 {<br>


 //判断当前年是否选中
  if(i==year)
  {
  
str +="<option selected='selected' value='"+i+"'>"+i+"</option>";
  }
  else
  {
  
str +="<option value='"+i+"'>"+i+"</option>";
  }
 }
  
 $("#nian").html(str); //也是将值写到年的下拉列表中
}
//加载月份
function LoadYue()
{<br>
 //和js中的月份的逻辑都是一样的
 var date=new Date;
 var yue=date.getMonth()+1; //取到当前月份
  
 var str = "";
  
 for(var i=1;i<13;i++)
 {<br>



 //判断月份是否选中
  if(i==yue)
  {
  
str +="<option selected='selected' value='"+i+"'>"+i+"</option>";
  }
  else
  {
  
str +="<option value='"+i+"'>"+i+"</option>";
  }
 }
 $("#yue").html(str);
}
//加载天
function LoadTian()
{<br>
 //和js中的逻辑是一样的
 var date=new Date;
 var tian = date.getDate(); //取到天数
  
 var zs = 31; //总天数
 var nian = $("#nian").val(); //取到年的值
 var yue = $("#yue").val(); //取到月的值<br><br>

 //也是天数是30天的月份
 if(yue == 4 || yue==6 || yue==9 || yue==11)
 {
 
zs = 30;
 }
 else if(yue==2)
 {<br>



 //判断闰月的
  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++)
 {<br>



 //判断天数是否选中
  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两种方式实现日期选择器

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

利用Query+bootstrap和js两种方式实现日期选择器

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

$("#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两种方式实现日期选择器

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JQuery下拉框应用示例介绍
Apr 23 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
Jun 13 Javascript
JavaScript中的原型和继承详解(图文)
Jul 18 Javascript
node.js操作mongoDB数据库示例分享
Nov 26 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
Mar 05 Javascript
深入理解js promise chain
May 05 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
Nov 01 Javascript
webpack打包js文件及部署的实现方法
Dec 18 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
Vue-input框checkbox强制刷新问题
Apr 18 Javascript
ES5新增数组的实现方法
May 12 Javascript
vue实现按钮切换图片
Jan 20 Vue.js
js实现背景图自适应窗口大小
Jan 10 #Javascript
微信JSAPI支付操作需要注意的细节
Jan 10 #Javascript
jQuery使用ajax方法解析返回的json数据功能示例
Jan 10 #Javascript
ajax实现动态下拉框示例
Jan 10 #Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 #Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 #Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 #Javascript
You might like
PHP回调函数概念与用法实例分析
2017/11/03 PHP
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
简单实现js浮动框
2016/12/13 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
如何将百度地图包装成Vue的组件的方法步骤
2019/02/12 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
python自动化测试之连接几组测试包实例
2014/09/28 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Transpose 数组行列转置的限制方式
2020/02/11 Python
Python sys模块常用方法解析
2020/02/20 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
配件采购员岗位职责
2013/12/03 职场文书
阅兵口号
2014/06/19 职场文书
车间质检员岗位职责
2015/04/08 职场文书
通讯稿范文
2015/07/22 职场文书
利用Python实现Picgo图床工具
2021/11/23 Python