My97DatePicker是一个非常优秀的日历插件,不仅支持多种调用模式,还支持日期范围限制。

常规的调用比较简单,如下所示:

1 <input class="Wdate" id="d1" onclick="WdatePicker()" />

下面重点说明日期范围限制:

1)静态限制

你可以给通过配置minDate(最小日期),maxDate(最大日期)为静态日期值,来限定日期的范围

示例1.1:限制日期的范围是 2012-12-1到2012-12-20

1 <input class="Wdate" id="d2" onfocus="WdatePicker({skin:'whyGreen',minDate:'2012-12-1',maxDate:'2012-12-20'})" />

示例1.2:限制日期的范围是 2012-12-4 21:30:00 到 2012-12-4 23:59:30

1 <input type="text" id="d3" class="Wdate"onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'2012-12-4 21:30:00',maxDate:'2012-12-4 23:59:30'})"value='2012-12-4 21:30:00'/>

示例1.3:限制日期的范围是 2012年12月 到 2013年12月

1 <input type="text" class="Wdate" id="d4" onfocus="WdatePicker({dateFmt:'yyyy年M月',minDate:'2012-12',maxDate:'2013-12'})"/>

示例1.4:限制时间的范围是 9:00:00 到 18:30:00

1 <input class="Wdate" id="d5"onfocus="WdatePicker({dateFmt:'H:mm:ss',minDate:'9:00:00',maxDate:'18:30:00'})"/>

2)动态限制

你可以通过系统给出的动态变量,如%y(当前年),%M(当前月)等来限度日期范围,你还可以通过{}进行表达式运算,如:{%d+1}:表示明天

动态变量表

格式 说明
%y 当前年
%M 当前月
%d 当前日
%ld 本月最后一天
%H 当前时
%m 当前分
%s 当前秒
{} 运算表达式,如:{%d+1}:表示明天
#F{} {}之间是函数可写自定义JS代码

示例2.1:只能选择今天以前的日期(包括今天)

1 <input id="d421" class="Wdate" type="text"  onfocus="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"/>

示例2.2:使用了运算表达式 只能选择今天以后的日期(不包括今天)

1 <input id="d422" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"/>

示例2.3:只能选择本月的日期1号至本月最后一天

1 <input id="d423" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld'})"/>

示例2.4:只能选择今天7:00:00至明天21:00:00的日期

1 <input id="d424" class="Wdate" type="text" onfocus="WdatePicker({dateFmt:'yyyy-M-d H:mm:ss',minDate:'%y-%M-%d 7:00:00',maxDate:'%y-%M-{%d+1} 21:00:00'})"/>

示例2.5:使用了运算表达式 只能选择 20小时前 至 30小时后 的日期

1 <input id="d425" class="Wdate" type="text" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'%y-%M-%d {%H-20}:%m:%s',maxDate:'%y-%M-%d {%H+30}:%m:%s'})"/>

3)脚本自定义限制

系统提供了$dp.$D和$dp.$DV这两个API来辅助你进行日期运算,此外你还可以通过在 #F{} 中填入你自定义的脚本,做任何你想做的日期限制

示例3.1: 前面的日期不能大于后面的日期且两个日期都不能大于 2020-10-01

从  到

1 <input id="d4311" class="Wdate" type="text"onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4312\')||\'2020-10-01\'}'})"/>
2 <input id="d4312" class="Wdate" type="text"onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4311\')}',maxDate:'2020-10-01'})"/>

示例3.2:前面的日期+3天 不能大于 后面的日期

从 到

1 <input type="text" class="Wdate" id="d4321"onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4322\',{d:-3});}'})"/>
2 <input   type="text" class="Wdate" id="d4322"onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4321\',{d:3});}'})"/>

示例3.3:前面的日期+3月零2天 不能大于 后面的日期 且 前面日期都不能大于 2020-4-3减去3月零2天 后面日期 不能大于 2020-4-3

从 到

1 <input type="text" class="Wdate" id="d4331"onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4332\',{M:-3,d:-2})||$dp.$DV(\'2020-4-3\',{M:-3,d:-2})}'})"/>
2 <input type="text" class="Wdate" id="d4332"onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4331\',{M:3,d:2});}',maxDate:'2020-4-3'})"/>

示例3.4:发挥你的JS才能,定义任何你想要的日期限制

自动转到随机生成的一天,当然,此示例没有实际的用途,只是为演示目的

01 <script>
02 //返回一个随机的日期
03 function randomDate(){
04 var Y = 2000 + Math.round(Math.random() * 10);
05 var M = 1 + Math.round(Math.random() * 11);
06 var D = 1 + Math.round(Math.random() * 27);
07 return Y+'-'+M+'-'+D;
08 }
09 </script>
10 <input type="text" class="Wdate" id="d434" onFocus="var date=randomDate();WdatePicker({minDate:date,maxDate:date})"/>

4)无效天限制

可以使用此功能禁用周日至周六所对应的日期,相关属性:disabledDays (0至6 分别代表周日至周六)

示例4.1:禁用 周六 所对应的日期

1 <input id="d441" type="text" class="Wdate" onFocus="WdatePicker({disabledDays:[6]})"/>

禁用 周六 周日 所对应的日期

1 <input id="d442" type="text" class="Wdate" onFocus="WdatePicker({disabledDays:[0,6]})"/>

5)无效日期限制

可以使用此功能禁用,所指定的一个或多个日期,只要熟悉正则表达式,可以尽情发挥

用法(正则匹配): 
如果你熟悉正则表达式,会很容易理解下面的匹配用法
如果不熟悉,可以参考下面的常用示例 
['2008-02-01','2008-02-29'] 表示禁用 2008-02-01 和 2008-02-29
['2008-..-01','2008-02-29'] 表示禁用 2008-所有月份-01 和 2008-02-29
['200[0-8]]-02-01','2008-02-29'] 表示禁用 [2000至2008]-02-01 和 2008-02-29
['^2006'] 表示禁用 2006年的所有日期

此外,您还可以使用 %y %M %d %H %m %s 等变量, 用法同动态日期限制 注意:%ld不能使用
['....-..-01','%y-%M-%d'] 表示禁用 所有年份和所有月份的第一天和今天 
['%y-%M-{%d-1}','%y-%M-{%d+1}'] 表示禁用 昨天和明天

当然,除了可以限制日期以外,您还可以限制时间
['....-..-.. 10\:00\:00'] 表示禁用 每天10点 (注意 : 需要 使用 \: )

示例5.1:禁用 每个月份的 5日 15日 25日

1 <input id="d451" type="text" class="Wdate" onFocus="WdatePicker({disabledDates:['5$']})"/>
2 //注意 :'5$' 表示以 5 结尾 注意 $ 的用法

示例5.2:禁用 所有早于2000-01-01的日期

1 <input id="d452" type="text" class="Wdate" onFocus="WdatePicker({disabledDates:['^19']})"/>
2 //注意:'^19' 表示以 19 开头 注意 ^ 的用法
3 //当然,可以使用minDate实现类似的功能 这里主要是 在演示 ^ 的用法

示例5.3:配合min/maxDate使用,可以把可选择的日期分隔成多段

1 <input id="d453" type="text" class="Wdate" onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$','1[1-5]$','2[58]$']})"/>

示例5.4:min/maxDate disabledDays disabledDates 配合使用 即使在要求非常苛刻的情况下也能满足需求

1 <input id="d454" type="text" class="Wdate" onFocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld',disabledDates:['0[4-7]$','1[1-5]$','2[58]$'],disabledDays:[1,3,6]})"/>

示例5.5:禁用前一个小时和后一个小时内所有时间 使用 %y %M %d %H %m %s 等变量

1 <input id="d2a25" type="text" class="Wdate" onFocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',disabledDates:['%y-%M-%d {%H-1}\:..\:..','%y-%M-%d {%H+1}\:..\:..']})"/>

示例5.6:#F{}也是可以使用的

本示例利用自定义函数 随机禁用0-23中的任何一个小时
打开小时选择框,你会发现有一个小时被禁用的,而且每次禁用的小时都不同

01 <script>
02 function randomH(){
03 //产生一个随机的数字 0-23
04 var H = Math.round(Math.random() * 23);
05 if(H<10H='0'+H;
06 //返回 '^' + 数字
07 return '^'+H;
08 }
09 </script>
10 <input type="text" class="Wdate" id="d456"onFocus="WdatePicker({dateFmt:'HH:mm:ss',disabledDates:['#F{randomH()}']})"/>

6)有效日期

使用无效日期可以很方便的禁用不可用的日期,但是在只需要启用少部分日期的情况下,有效日期的功能就非常适合了.

关键属性: opposite 默认为false, 为true时,无效日期变成有效日期,该属性对无效天,特殊天不起作用

示例6.1:只启用 每个月份的 5日 15日 25日

1 <input id="d46" type="text" class="Wdate"onFocus="WdatePicker({opposite:true,disabledDates:['5$']})"/>
2 //注意 :'5$' 表示以 5 结尾 注意 $ 的用法

7)特殊天和特殊日期

特殊天和特殊日期的用法跟完全无效天和无效日期完全相同,但是opposite属性对其无效

关键属性:

specialDays (0至6 分别代表 周日至周六) 用法同无效天

specialDates 用法同无效日期,但是对时分秒无效

示例7.1:高亮每周 周一 周五

1 <input id="d471" type="text" class="Wdate" onFocus="WdatePicker({specialDays:[1,5]})"/>

示例7.2:高亮每月 1号 15号

1 <input id="d472" type="text" class="Wdate" onFocus="WdatePicker({specialDates:['....-..-01','....-..-15']})"/>

JQuery日历插件My97DatePicker日期范围限制的更多相关文章

  1. 记录-JQuery日历插件My97DatePicker日期范围限制

    对于日期控件,有时会有不能选择今天以前的日期这种需求..... My97DatePicker是一个非常优秀的日历插件,不仅支持多种调用模式,还支持日期范围限制. 常规的调用比较简单,如下所示: 1 & ...

  2. 11个实用jQuery日历插件

    1. FullCalendar FullCalendar是很出名的jQuery日历插件,它支持拖拽等功能,整合了Google Calendar,而且可以通过JSON来绑定事件,设计师可以轻松地自定义日 ...

  3. 10个漂亮的jQuery日历插件下载【转载】

    10个漂亮的jQuery日历插件下载 2013-08-07 标签:jQuery日历插件jQuery日历jQuery插件   日期是非常重要的,随时随地.微薄或网站的日期选取器日历必须在那里.您可以使用 ...

  4. 给开发者准备的 10 款最好的 jQuery 日历插件[转]

    这篇文章介绍的是 10 款最棒而且又很有用的 jQuery 日历插件,允许开发者们把这些漂亮的日历插件结合到自己的网站中.这些日历插件易用性都很强,轻轻松松的就可以把漂亮的日历插件装饰到你的网站了.希 ...

  5. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  6. 一款基于jQuery日历插件的开发过程

    这个插件的设置选项,所有样式都设置成自定义,提供回调函数,方便在外部进行扩展 css设置是可变的  也就是说  日历的样式是定制的: /******************************** ...

  7. 日历插件My97DatePicker的使用

    在开发过程中,我们会经常遇到让用户输入日期的表单,这类表单处理起来也不是太繁琐,就是简单的字符串和日期之间的转换.但是,如果用户不按照已设定的日期格式进行输入,必定会造成不必要的麻烦.为了更好的处理这 ...

  8. jquery日历插件FullCalendar使用技巧

    原文链接:http://blog.csdn.net/u013493957/article/details/44920341   FullCalendar是一款基于jquery的日历控件,它有着很强大的 ...

  9. 利用jquery mobiscroll插件选择日期、select、treeList的具体运用

    体验更优排版请移步原文:http://blog.kwin.wang/programming/jquery-mobiscroll-select-treeList.html mobiscroll是个很好用 ...

随机推荐

  1. Java前辈:学习J2EE流程中的经验和教训

    Java前辈:学习J2EE流程中的经验和教训   在这里我谈谈我在学习j2ee流程,并谈到在此过程中领会的经验和教训.以便后来者少走弯路. Java发展到现在,按应用来分主要分为三大块:J2SE,J2 ...

  2. 提取所有mtk机型的线刷包

    首先手机root且安装busybox和超级终端软件,这里不提供自己百度一大堆 一.制作scatter 示范 PRELOADER 0x0 { } MBR 0x600000 { } EBR1 0x6800 ...

  3. quartz2.2.1-测试02-通过servlet动态修改定时任务运行时间

    /* * To change this license header, choose License Headers in Project Properties. * To change this t ...

  4. jboss部署应用

    简单的部署应用. 第一种方法是直接写JSP代码,然后放到指定的WAR文件夹中. 第二种,是同时META-INF下的application.xml文件,然后用JAR -CF编成WAR,再集合JSP形成E ...

  5. C51系列RAM寄存器表

    特殊功能寄存器地址表 SFR 符号 字节 地址 位地址和位名称 D7 D6 D5 D4 D3 D2 D1 D0 P0口 P0 80H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0. ...

  6. 51单片机C51毫秒级(ms)精确延时

    如下程序能实现ms毫秒级的比较精确的延时 void Delayms(unsigned int n) { unsigned int i,j; ;j--) ;i>;i--); } 用keil可以看出 ...

  7. jmap命令结合mat插件分析内存泄露--OQL

    http://smallnetvisitor.iteye.com/blog/1826434 User.java package gc; import java.util.ArrayList; impo ...

  8. MyBatis里字段到枚举类型的转换/映射

    一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是枚举,在DB存储时我们想存的枚举的代号,从DB拿出来时想直接映射成目标枚举类型,也即代号字段与Java枚举类的相互类型转 ...

  9. 如何将Java Web项目部署到服务器上

    转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...

  10. 鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425

    鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425 联系我们