今天项目中看到了一个很简洁,操作也很方便的时间控件,顺便收藏一下。
1.
My97DatePicker是一款非常灵活好用的日期控件。使用非常简单。
1、下载My97DatePicker组件包
下载地址:http://download.csdn.net/detail/emoven/8249073
2、在页面中引入该组件js文件:
<script type="text/JavaScript" src="My97DatePicker/WdatePicker.js"></script>
3、例子
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="s" uri="/struts-tags"%> 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 <title>My97DatePicker日期控件使用</title> 8 </head> 9 <body> 10 <center> 11 <h2>My97DatePicker日期控件的使用</h2> 12 </center> 13 基本用法: 14 <input id="" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})" /><br><br> 15 16 只能选择今天以前的日期: 17 <input id="" class="Wdate" onfocus="WdatePicker({readOnly:true,maxDate:'%y-%M-%d'})" /><br><br> 18 19 使用运算表达式 只能选择 20小时前 至 30小时后 的日期 20 <input id="" class="Wdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'%y-%M-%d {%H-20}:%m:%s',maxDate:'%y-%M-%d {%H+30}:%m:%s'})" /><br><br> 21 22 开始,结束日期:<!-- $dp.$ 相当于 document.getElementById 函数. --> 23 <input id="sdate" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true,maxDate:'#F{$dp.$D(\'edate\')}'})" /> 24 - 25 <input id="edate" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true,minDate:'#F{$dp.$D(\'sdate\')}',startDate:'#F{$dp.$D(\'sdate\',{d:+1})}'})" /><br><br> 26 27 </body> 28 <script type="text/javascript" src="/js/My97DatePicker/WdatePicker.js"></script> 29 </html>
4.如需修改配置信息,只需WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true,maxDate:'#F{$dp.$D(\'edate\')}'})" 加上相关配置信息即可
4、常用的配置信息。
配置信息主要在onfocus="WdatePicker({dateFmt:'yyyy-MM-dd',readOnly:true})" 的
WdatePicker 方法的 { } 对象中定义。
常用的配置信息在 WdatePicker.js 文件中定义了。
1 var $dp,WdatePicker;(function(){var _={ 2 $wdate:true, 3 $dpPath:"", 4 $crossFrame:true, 5 doubleCalendar:false, //是否双月日历 6 autoUpdateOnChanged:false, 7 position:{}, //位置如:position:{left:100,top:50} 8 lang:"auto", 9 skin:"default", //皮肤 10 dateFmt:"yyyy-MM-dd", //日期格式 11 realDateFmt:"yyyy-MM-dd", 12 realTimeFmt:"HH:mm:ss", 13 realFullFmt:"%Date %Time", 14 minDate:"1900-01-01 00:00:00", //最小日期 15 maxDate:"2099-12-31 23:59:59", //最大日期 16 startDate:"", //起始日期 17 alwaysUseStartDate:false, //当日期框无论是何值,始终使用 startDate 做为起始日期 18 yearOffset:1911, 19 firstDayOfWeek:0, //自定义星期的第一天 20 isShowWeek:false, //是否显示周 21 highLineWeekDay:true, //高亮周日 22 isShowClear:true, //是否显示清空 23 isShowToday:true, //是否显示今天 24 isShowOK:true, //是否显示OK 25 isShowOthers:true, 26 readOnly:false, //是否只读 27 qsEnabled:true, 28 errDealMode:0, //自动纠错功能 29 //0 在输入错误日期时,会先提示 30 //1 在输入错误日期时,自动恢复前一次正确的值 31 //2 在输入错误日期时,不做提示和更改,只是做一个标记,但此时日期框不会马上隐藏 32 autoPickDate:null, //点两次才能选择日期的原因 33 //为false时 点日期的时候不自动输入,而是要通过确定才能输入 34 //为true时 即点击日期即可返回日期值 35 //为null时(推荐使用) 如果有时间置为false 否则置为true 36 specialDates:null, //特殊日期 37 specialDays:null, //特殊天 38 disabledDates:null, //无效日期 如:disabledDates:['5$'] 39 disabledDays:null, //无效天 如:disabledDays:[6] 40 opposite:false, //有效日期
- 利用onclick或onfocus事件触发
<input id="d11" type="text" onClick="WdatePicker()"/>
示例1-1-2 图标触发
<input id="d12" type="text"/>
<img onclick="WdatePicker({el:'d12'})" src="../skin/datePicker.gif" width="16" height="22" align="absmiddle">
注意:只需要传入控件的id即可 el:绑定控件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 实际的格式与显示的格式,多用于传入后台的格式与显示不符的情况
<input id="d244" type="text" class="Wdate" onfocus="WdatePicker({dateFmt:'yyyy年M月d日',vel:'d244_2'})"/>
<input id="d244_2" type="text" />
注意:在实际应用中,一般会把vel指定为一个hidden控件,这里是为了把真实值展示出来,所以使用文本框
关键属性: vel 指定一个控件或控件的ID,必须具有value属性(如input),用于存储真实值(也就是realDateFmt和realTimeFmt格式化后的值)
- 1
- 2
- 3
- 4
- 5
- 日期开始时间不大于结束时间等限制
<input type="text" class="Wdate" id="d4321" onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4322\');}'})"/>
<input type="text" class="Wdate" id="d4322" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4321\');}'})"/>
注意:
两个日期的日期格式必须相同
$dp.$ 相当于 document.getElementById 函数.
使用 $dp.$D 函数 可以将日期框中的值,加上定义的日期差量:
两个参数: id={字符类型}需要处理的文本框的id值 , obj={对象类型}日期差量
日期差量用法:#F{$dp.$D(\'d4321\',{d:3});}
属性y,M,d,H,m,s分别代表年月日时分秒
如
为空时,表示直接取值,不做差量(示例4-3-1中的参数就是空的)
{M:5,d:7} 表示 五个月零7天
{y:1,d:-3} 表示 1年少3天
{d:1,H:1} 表示一天多1小时
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- onpicked函数
此处是在工作时遇到的,要求开始时间选择之后,结束时间默认填写为当前时间加1天的0点。
<input id="stTime" class="Wdate"
onfocus="var ed=$dp.$('endTime');
WdatePicker({dateFmt:\'yyyy-MM-dd HH:mm:ss\',
onpicked:function(dp){
if(ed.value == null|| ed.value==\'\'){
//changeDate做时间加一天的处理,此处不写了。。。
ed.value=changeDate(dat);
}
//此处最好联动的调用结束时间的控件,由于My97点击控件时需按两下才能选中,
//如果不调的话,日历不消失。
ed.focus();
})" />
<input id="endTime" class="Wdate" onfocus="
WdatePicker(
{dateFmt:\'yyyy-MM-dd HH:mm:ss\',
realFmt:\'yyyy-MM-dd HH:mm:ss\',
minDate:\'#F{$dp.$D(stTime)}\'})" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
其中 onpicked后的函数可单独提出写。