转:laydate日历控件的使用

编程入门 行业动态 更新时间:2024-10-23 19:31:17

转:laydate日历<a href=https://www.elefans.com/category/jswz/34/1769529.html style=控件的使用"/>

转:laydate日历控件的使用

原文转载自:.html

 

在日常的网页开发过程中,日期组件已经成为不可或缺的组件之一。同时,随着广大杰出攻城狮的不懈努力,也出现了很多优秀的日期组件,其中我个人觉得 layDate 日期组件是一个非常不错的组件,简洁易用,样式清爽。

此文主要以贤心所作的 layDate 组件进行日期选择的演示,敬请各位小主们参阅,若有不足之处,敬请大神指正,不胜感激!

闲不多言,直接上码。

演示文档的工程目录如下图所示:

 

laydate-demo.html 对应的HTML代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".dtd">
<html xmlns=""><head><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title>laydate 日期插件演示示例</title><script type="text/javascript" src="laydate/laydate.js"></script><script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="dateUtils.js"></script><link rel="stylesheet" type="text/css" href="css/page.css" /></head><body><div class="box"><h3>laydate API:</h3><pre>一、核心方法:laydate(options);options是一个对象,它包含了以下key: '默认值'elem: '#id',                        // 日期显示元素选择器,laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'event: 'click',                    // 触发事件。如果没有传入event,则按照默认的clickformat: 'YYYY-MM-DD hh:mm:ss',    // 日期格式istime: false,                        // 是否开启时间选择isclear: true,                        // 是否显示清空istoday: true,                    // 是否显示今天issure: true,                        // 是否显示确认festival: true,                    // 是否显示节日min: '1900-01-01 00:00:00',            // 最小日期max: '2099-12-31 23:59:59',        // 最大日期start: '2014-6-15 23:00:00',            // 开始日期fixed: false,                        // 是否固定在可视区域zIndex: 99999999,                // css z-indexchoose: function(dates){            // 选择好日期的回调}二、其它方法/属性laydate.v            // 获取laydate版本号laydate.skin(lib);    // 加载皮肤,参数lib为皮肤名 /*layer.now支持多类型参数。timestamp可以是前后若干天,也可以是一个时间戳。format为日期格式,为空时则采用默认的“-”分割。如laydate.now(-2)将返回前天,laydate.now(3999634079890)将返回2096-09-28*/layer.now(timestamp, format);   // 该方法提供了丰富的功能,推荐灵活使用。laydate.reset();                // 重设日历控件坐标,一般用于页面dom结构改变时。无参</pre></div><div class="box"><h3>演示一:直接调用 laydate,无参内部调用</h3><input placeholder="请输入日期" class="laydate-icon" οnclick="laydate()"></div><div class="box"><h3>演示二:js无参数外部调用</h3>            <input class="laydate-icon" id="demo"></div><div class="box"><h3>演示三:图标触发日期</h3><input id="ico" readonly><span class="laydate-icon" οnclick="laydate({elem: '#ico'});"></span></div><div class="box"><h3>演示四:自定义日期格式(只能选择年月且显示节日)</h3><input id="custom_date_format" class="laydate-icon"></input></div><div class="box"><h3>演示五:基于当前日期控制日期范围(显示当前日期前7天后7天的数据)</h3><input id="custom_date_scope" class="laydate-icon"></input></div><div class="box"><h3>演示六:显示日期和时间</h3><input id="custom_date_full" class="laydate-icon"></input></div><div class="box"><h3>演示七:双日期范围显示限制(后一个数据必须小于前一个数据 )</h3>有效时间:<input id="time_start" class="laydate-icon"></input> --- <input id="time_end" class="laydate-icon"></input></div><div class="box" style="text-align:center"><p>以上,就是我基于贤心所作日期插件 layDate 进行的日期组件演示。<br>个人觉得,其是一款非常不错的日期插件,对其皮肤样式,我个人比较倾向选择 淡蓝 的样式,简洁明快。<br>以下为相应的参考链接以及 layDate 插件下载的目录(内含所需的皮肤)。</p><a href=".asp" target="_blank">JavaScript Date 对象</a></div></body>
</html>

page.css如下:

*{margin:0;padding:0;list-style:none;}
html{background-color:#E3E3E3;font-size:14px;color:#000;font-family:'微软雅黑';}
h2{line-height:30px;font-size:20px;}
a,a:hover{text-decoration:none;}
pre{font-family:'微软雅黑';}
.box{width:1200px;padding:10px 20px;background-color:#fff;margin:10px auto;}
.box a{padding-right:20px;}
h3{margin:10px 0;}
.layinput{height: 22px;line-height: 22px;width: 150px;margin: 0;}

在body中添加的js如下:

<script>;!function(){laydate.skin('molv');//皮肤// 演示二:js外部调用laydate({elem:"#demo",start:laydate.now(0, "YYYY-MM-DD")})}();/** 演示四:自定义日期格式(只能选择年月且显示节日)*/laydate({elem: '#custom_date_format',format: 'YYYY-MM', // 分隔符可以任意定义,该例子表示只显示年月festival: true,    // 显示节日choose: function(datas){ // 选择日期完毕的回调// alert('您选择的日期为:'+datas);}});/** 演示五:基于当前日期控制日期范围(显示当前日期前7天后7天的数据)*/laydate({elem: '#custom_date_scope',min: laydate.now(-7), // -1代表昨天,-2代表前天,以此类推max: laydate.now(+7)  // +1代表明天,+2代表后天,以此类推});/** 演示六:显示日期和时间*/laydate({elem: '#custom_date_full',format: 'YYYY-MM-DD hh:mm:ss', // 分隔符可以任意定义,该例子表示只显示年月festival: true,                // 显示节日istime: true,start:laydate.now(0, "YYYY-MM-DD hh:mm:ss"),//默认为当前时间,否则时分秒显示的数据将全部为0choose: function(dates){       // 选择日期完毕的回调// alert('您选择的日期时间为:'+dates);}});/** 演示七:双日期范围显示限制(后一个数据必须小于前一个数据 )*/var start_time = {elem: '#time_start',format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(),           // 设定最小日期为当前日期//max: laydate.now(+5),       // 最大日期istime: true,istoday: true,start:laydate.now(0, "YYYY-MM-DD hh:mm:ss"),choose: function(dates){var cur = convertString2Date(dates);//选中的日期// 开始日选好后,重置结束日的最小日期为下一天end_time.min = convertDate2String(adjustDate(cur, 60*60*24));// 将结束日的初始值设定为开始日的第三天end_time.start = convertDate2String(adjustDate(cur, 60*60*24*3));/*var str = convertDate2String(cur);var mse = adjustDate(cur, 0);var ad  = convertDate2String(mse);alert("当前日期:" + cur + "\n\n格式日期:" + str + "\n\n毫秒总数:" + mse + "\n\n调整日期:" + mse+ "\n\n加 1 秒:" + convertDate2String(adjustDate(cur, 1))+ "\n\n加 1 分:" + convertDate2String(adjustDate(cur, 60))+ "\n\n加 1 时:" + convertDate2String(adjustDate(cur, 60*60))+ "\n\n加 1 天:" + convertDate2String(adjustDate(cur, 60*60*24))+ "\n\n加 1 月:" + convertDate2String(adjustDate(cur, 60*60*24*30))+ "\n\n加 1 年:" + convertDate2String(adjustDate(cur, 60*60*24*30*12))+ "\n\n减 1 秒:" + convertDate2String(adjustDate(cur, -1))+ "\n\n减 1 分:" + convertDate2String(adjustDate(cur, -60))+ "\n\n减 1 时:" + convertDate2String(adjustDate(cur, -60*60))+ "\n\n减 1 天:" + convertDate2String(adjustDate(cur, -60*60*24))+ "\n\n减 1 月:" + convertDate2String(adjustDate(cur, -60*60*24*30))+ "\n\n减 1 年:" + convertDate2String(adjustDate(cur, -60*60*24*30*12)));// 开始日选好后,重置结束日的最小日期为下一天end_time.min = convertDate2String(adjustDate(cur, 60*60*24));// 将结束日的初始值设定为开始日的第三天end_time.start = convertDate2String(adjustDate(cur, 60*60*24*2));// 将结束日的终止值设定为开始日的第三十天,日期范围为一个月end_time.max = convertDate2String(adjustDate(cur, 60*60*24*30));*/}};var end_time = {elem: '#time_end',format: 'YYYY-MM-DD hh:mm:ss',min: laydate.now(),max: '2099-06-16 23:59:59',istime: true,istoday: false,choose: function(dates){/*var cur = convertString2Date(dates);// 结束日选好后,重置开始日的最大日期为前第一天start_time.max = convertDate2String(adjustDate(cur, -60*60*24));// 将起始日的初始值设定为结束日的前第三十天start_time.start = convertDate2String(adjustDate(cur, -60*60*24*30));// 将起始日的起始日期设定为结束日的前第三十天,日期范围为一个月start_time.min = convertDate2String(adjustDate(cur, -60*60*24*30));*/}};laydate(start_time);laydate(end_time);
</script>

dateUtils.js如下(原链接发的图,奈何我要测试,手动敲了一遍):

/**
* 该方法用来讲字符串转换成日期
* @param date:日期字符串
**/
function convertString2Date(date){return new Date(Date.parse(date.replace(/-/g,"/")));
}/*** 格式化日期字符串* @param date:日期字符串*/
function convertDate2String(date){//获取年份var year = date.getFullYear();//获取月份,若月份为单位数月份,那么在月份前补0var month = (date.getMonth()+1).toString();if(month.length<2) month = "0"+month;//获取日期,若日期为单位数,那么补0var day = date.getDate().toString();if(day.length<2) day = "0"+day;//获取小时数,若小时数为单位数,那么补0var hour = date.getHours().toString();if(hour.length<2) hour = "0"+hour;//获取分钟,若分钟为单位数,那么补0var minute = date.getMinutes().toString();if(minute.length<2) minute = "0"+minute;//获取秒数,若秒数为单位数,那么补0var second = date.getSeconds().toString();if(second.length<2) second = "0"+second;return year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;
}/*** 该方法用来依据秒数调整日期时间* @param date:日期* @param second:秒数,可为负数*/
function adjustDate(date,second){//获取时间戳,即1970年1月1日至今的毫秒数var milli_seconds = date.getTime();//声明一个日期对象var adjustDate = new Date();//通过时间戳设定时间adjustDate.setTime(milli_seconds+second*1000)return adjustDate;
}

效果图如下:

至此,转载完成。

我这篇与原文并不完全一致,有根据个人需要做相应修改,效果图也是我自己demo的图。

有时间了想加个周末不能选的功能,等弄出来了再更新上来。
  

更多推荐

转:laydate日历控件的使用

本文发布于:2024-03-09 14:27:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1725230.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:控件   日历   laydate

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!