`

转:laydate日历控件的使用

 
阅读更多

原文转载自:http://www.cnblogs.com/fengpingfan/p/4660273.html

 

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

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

闲不多言,直接上码。

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

 

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <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,则按照默认的click
                    format: '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-index
                    choose: 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" onclick="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" onclick="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="http://www.w3school.com.cn/jsref/jsref_obj_date.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"),//默认为当前时间,否则时分秒显示的数据将全部为0
		choose: 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();
	
	//获取月份,若月份为单位数月份,那么在月份前补0
	var month = (date.getMonth()+1).toString();
	if(month.length<2) month = "0"+month;
	
	//获取日期,若日期为单位数,那么补0
	var day = date.getDate().toString();
	if(day.length<2) day = "0"+day;
	
	//获取小时数,若小时数为单位数,那么补0
	var hour = date.getHours().toString();
	if(hour.length<2) hour = "0"+hour;
	
	//获取分钟,若分钟为单位数,那么补0
	var minute = date.getMinutes().toString();
	if(minute.length<2) minute = "0"+minute;
	
	//获取秒数,若秒数为单位数,那么补0
	var 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的图。

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

  • 大小: 4.9 KB
  • 大小: 31.2 KB
分享到:
评论

相关推荐

    layui-laydate时间日历控件使用方法详解

    layui-laydate是一款非常实用的时间日历插件,它提供了丰富的功能和自定义选项,能够满足用户在网页中对日期和时间的选择需求。本篇文章将详细介绍laydate的使用方法,包括在layui模块中的使用和作为独立组件的使用...

    原生js layDate日历控件多款日历选择器样式代码下载

    在使用layDate时,你需要首先引入layDate的JS和CSS文件,然后通过调用layDate的方法来初始化日历控件。例如,基本的日期选择器初始化代码如下: ```html &lt;!DOCTYPE html&gt; &lt;link rel="stylesheet" href="path/to/...

    js layDate日历控件代码.zip

    《js layDate日历控件代码详解》 在前端开发中,日历控件是一种常见的交互元素,用于选择日期或设定日期范围。layDate是一款基于JavaScript的轻量级日历插件,它提供了丰富的功能和自定义选项,适用于各种Web项目。...

    layDate日期控件使用方法详解

    在详细讲解layDate日期控件使用方法之前,首先我们需要了解,layDate是一个基于Layui框架开发的日期时间选择插件,它具有轻量、易用、丰富的API接口等特点,非常适合在Web前端开发中使用,以提高用户在表单填写或者...

    laydate日历控件使用方法详解

    laydate日历控件使用方法详解 laydate日历控件是一款功能强大且灵活的日期选择控件,它提供了许多实用的配置选项和回调函数,能够满足各种日期选择需求。下面我们将详细介绍laydate日历控件的使用方法。 一、基本...

    layui-laydate时间日历控件选择特效.zip

    这个压缩包“layui-laydate时间日历控件选择特效.zip”显然包含了实现这种特效的相关资源,如CSS样式、JavaScript脚本以及可能的示例文件。以下是关于layui-laydate的一些详细知识点: 1. layui简介:layui是一款轻...

    laydate,最简单的js时间控件

    laydate是一款由知名前端开发者贤心开发的...总的来说,laydate是一个强大且易用的JavaScript时间控件,无论你是初学者还是经验丰富的开发者,都可以轻松上手并将其应用于项目中,提升用户在处理日期时间输入时的体验。

    laydate日历插件

    本文将深入探讨layDate的日历控件,包括其核心特性、使用方法、自定义配置以及与其他layui组件的协同工作。 一、layDate简介 layDate是一款独立的日期时间选择器,适用于PC和移动设备,兼容多种浏览器环境。它提供...

    日历 layDate日历控件.rar

    总结来说,"日历 layDate日历控件.rar"提供了完整的layDate日历插件,包括示例、核心代码和使用指南,适合前端开发者快速集成和定制日期选择功能。通过深入学习和实践,你可以掌握layDate的使用技巧,提升你的前端...

    JS日历控件特效代码layDate.zip

    JS日历控件特效代码layDate,非常不错的日历控件,调用也非常简单有两种方式,首先要导入laydate.js 一种是直接使用nclick="laydate()"函数,另一种是通过ID来调用,还是很不错的日历日期控件。

    JS日历控件特效代码layDate

    JS日历控件特效代码layDate,非常不错的日历控件,调用也非常简单有两种方式,首先要导入laydate.js,一种是直接使用nclick="laydate()"函数,另一种是通过ID来调用,还是很不错的日历日期控件。

    js日历控件

    二、laydate日历控件介绍 laydate是一款流行且功能强大的JavaScript日历插件,它提供多种皮肤、丰富的自定义选项,且兼容各种浏览器。laydate的主要特点有: 1. 简洁的API:laydate提供了简单易用的接口,开发者...

    js layDate日历控件特效代码

    【js layDate日历控件特效代码】是一个基于JavaScript的原生日历选择器,它提供了丰富的样式和功能,能够方便地集成到网页中,为用户提供直观、易用的日期选择体验。layDate是一个高性能、轻量级的插件,适用于各种...

    js日历控件,非常好

    总的来说,laydate日历控件是一个强大且易于使用的JS组件,它能够帮助开发者快速实现网页上的日期选择功能,同时确保在多种浏览器环境下的稳定表现。对于那些需要在网页上集成日期输入的项目来说,laydate是一个值得...

    lay日历控件

    lay日历控件是基于layui框架的一个强大且易用的日期选择组件,它为Web应用提供了丰富的日期选择功能。layui是一款轻量级的前端模块化框架,它具有高性能、模块化、易于使用等特点,而laydate则是layui生态中的重要...

    laydate日期控件

    她基于原生JavaScript精心雕琢,兼容了包括IE6在内的所有主流浏览器...layDate本着资源共享的开发者精神和对网页日历交互无穷的追求,延续了layui一贯的简单与易用。她遵循LGPL协议,您可以免费将她用于任何个人项目。

Global site tag (gtag.js) - Google Analytics