jquery UI Datepicker时间控件的使用方法(终结版)


Posted in Javascript onNovember 07, 2015

近期项目中用到日期控件,感觉不错,写出来分享给大家看看,我限制的开始时间和结束时间跨度不超过三天,并配置有清空时间,重选时间等功能,分享给大家:
先给大家看两张效果图

jquery UI Datepicker时间控件的使用方法(终结版)

jquery UI Datepicker时间控件的使用方法(终结版)

在例子中我控制的开始时间和结束时间为三天,也就是开始时间和结束时间的跨度不能超过三天。

具体是怎么实现的,代码中会附有很详细的解释,请大家继续往下看:

第一步,引入控件js,这里有两个,一个是jquery.js,一个是jquery-ui-datepicker.js,当然还有引入样式文件:

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery-ui-datepicker.js"></script> 
<link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />

第二步:创建一个文本输入框,text类型的input,我的demo中还写入了清空时间的设置,也就是一个按钮响应事件

<td width="35%">
    <label>开始时间:</label>
    <input type="text" name="start" id="start" value="${params.start}" readonly="true" title="日期范围不能大于3天"/>
    <input type="button" class="formButton" value="清空" onclick="cleaPrevInput(this);"/>
    <font color="red">必选*</font>
   </td>
   <td width="35%">
    <label>结束时间:</label>
    <input type="text" name="end" id="end" value="${params.end}" readonly="true" title="日期范围不能大于3天"/>
    <input type="button" class="formButton" value="清空" onclick="cleaPrevInput(this);"/>
    <font color="red">必选*</font>
   </td>

里面value的值不用管,我这是写在项目中的代码,value值这样写是为了查询后刷新页面的时候时间框中依然可以有选择的时间值的。

下面的代码就是调用日期控件的了,代码如下:

$(function(){
 // 获取调用控件的对象
 var dates = $("#start,#end");
 var option;
 //设置目标时间,因为例子中的开始时间和结束时间是有时间限制的
 var targetDate;
 var optionEnd;
 var targetDateEnd;
 dates.datepicker({
  showButtonPanel:false,
  //当选择时间的时候触发此事件
  onSelect: function(selectedDate){ 
   if(this.id == "start"){
   // 如果是选择了开始时间
   option = "minDate";
   //getTimeByDateStr 这个方法的代码下面会贴出来的,就是处理时间的代码
   var selectedTime = getTimeByDateStr(selectedDate);
   var minTime = selectedTime;
   targetDate = new Date(minTime);
   //设置结束时间
   optionEnd = "maxDate";
   targetDateEnd = new Date(minTime+2*24*60*60*1000);
   }else{
   // 如果是选择了结束时间
   option = "maxDate";
   var selectedTime = getTimeByDateStr(selectedDate);
   var maxTime = selectedTime;
   targetDate = new Date(maxTime);
   //设置开始时间
   optionEnd = "minDate";
   targetDateEnd = new Date(maxTime-2*24*60*60*1000);

   }
   //设置时间框中时间,比如根据选择的开始时间,限制结束时间的不可选项,dates.not(this)是js选择器使用,
   //datepicker("option", option, targetDate),这个就是日期控件封装的api了
   dates.not(this).datepicker("option", option, targetDate); 
   dates.not(this).datepicker("option", optionEnd, targetDateEnd); 
  }
 });
});

下面先把上面代码中getTimeByDateStr(XXX) 方法的代码贴出来,大家看的方便,这个代码很简单,相信大家一看便懂:

//根据日期字符串取得其时间
function getTimeByDateStr(dateStr){
 var year = parseInt(dateStr.substring(0,4));
 var month = parseInt(dateStr.substring(5,7),10)-1;
 var day = parseInt(dateStr.substring(8,10),10);
 return new Date(year, month, day).getTime();
}

代码到现在就可以实现日期控件的使用,并且开始时间和结束时间限制在三天以内,比如你选择了开始时间为2014-03-27,那么结束时间只有27,28,29三天可选,其余日期不可点击,如果你选择了结束时间为28,那么,现在开始时间就只能选择28,27,26了,就这样。

第三步:大家看清空按钮,清空按钮是清空时间选择框中的值,这个实现起来很简单了:

//清空日历控件
function cleaPrevInput(objs){
 //清空输入框中的值,但是仅仅是清空了值而已,时间控件的选值限制还在的
 $(objs).prev().val("");
 //如果开始时间和结束时间都清空了,这时应该是你选择的那个框中是没有时间限制的,也就是说可以随便选择日期
 if($('#start').val()=="" && $('#end').val()==""){
 var dates = $("#start,#end");
 //调用datepicker封装的api,使刚刚设置的开始时间和结束时间为空,这样就可以选择任意日期了
 dates.datepicker("option", "minDate", null);
 dates.datepicker("option", "maxDate", null);
 }
}

现在就可以使用了,如果只是使用控件,不需要设置时间限制就非常简单了,上面代码可以供多数日期选择方面的需求使用了,但是如果有特殊的话,还需自己去查api吧,当时我单单为了清空日期控件中的值,就是这句代码:dates.datepicker("option", "maxDate", null),就查了半天的api,还是需要大家有足够的耐心。

以上就是关于jquery UI Datepicker时间控件的全部内容介绍,暂时画上了一个句号,以后再有相关文章,一定第一时间与大家分享。

Javascript 相关文章推荐
prototype class详解
Sep 07 Javascript
Knockoutjs快速入门(经典)
Dec 24 Javascript
JavaScript日期类型的一些用法介绍
Mar 02 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
jquery图片滚动放大代码分享(2)
Aug 28 Javascript
基于JavaScript实现动态添加删除表格的行
Feb 01 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
Aug 21 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
详解Element 指令clickoutside源码分析
Feb 15 Javascript
vue递归组件实战之简单树形控件实例代码
Aug 27 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
Nov 07 #Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
Nov 07 #Javascript
jquery验证邮箱格式并显示提交按钮
Nov 07 #Javascript
jquery判断当前浏览器的实现代码
Nov 07 #Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
Nov 07 #Javascript
js识别uc浏览器的代码
Nov 06 #Javascript
详解javascript数组去重问题
Nov 06 #Javascript
You might like
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/29 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
php获取本地图片文件并生成xml文件输出具体思路
2013/04/27 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
浅谈javascript中的DOM方法
2015/07/16 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
在vue中使用jointjs的方法
2018/03/24 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
python获取外网ip地址的方法总结
2015/07/02 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
Python模块future用法原理详解
2020/01/20 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Python如何实现的二分查找算法
2020/05/27 Python
运行Python编写的程序方法实例
2020/10/21 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
电工技术比武方案
2014/05/11 职场文书
装修施工安全责任书
2014/07/24 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
大学生英文求职信范文
2015/03/19 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python