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 相关文章推荐
jQuery下通过$.browser来判断浏览器.
Apr 05 Javascript
基于jquery实现的表格分页实现代码
Jun 21 Javascript
新浪微博字数统计 textarea字数统计实现代码
Aug 28 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
全面理解闭包机制
Jul 11 Javascript
react-redux中connect的装饰器用法@connect详解
Jan 13 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
Dec 03 Javascript
vue无限轮播插件代码实例
May 10 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
Mar 04 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
Mar 10 Javascript
低门槛开发iOS、Android、小程序应用的前端框架详解
Oct 16 Javascript
关于JS中的作用域中的问题思考分享
Apr 06 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列出MySQL中所有数据库的方法
2015/03/12 PHP
动态加载js的几种方法
2006/10/23 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
Python 字符串大小写转换的简单实例
2017/01/21 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
SQL Server笔试题
2012/01/10 面试题
介绍一下RMI的基本概念
2016/12/17 面试题
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
函授毕业生自我鉴定
2013/11/06 职场文书
股权转让意向书
2014/04/01 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
刑事案件上诉状
2015/05/23 职场文书
演讲比赛主持词
2015/06/29 职场文书
2016春季运动会前导词
2015/11/25 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
python基础之文件处理知识总结
2021/05/23 Python