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 相关文章推荐
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
Angularjs上传文件组件flowjs功能
Aug 07 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 Javascript
详解VUE 数组更新
Dec 16 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
vue仿element实现分页器效果
Sep 13 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 Javascript
vue 解决路由只变化参数页面组件不更新问题
Nov 05 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 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
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2014/06/23 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
javascript函数库-集合框架
2007/04/27 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python处理中文标点符号大集合
2018/05/14 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
大学生自荐书范文
2013/12/10 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2016年主题党日活动总结
2016/04/05 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
日元符号 ¥
2022/02/17 杂记
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android