My97日期控件 功能演示 日期范围限制
4. 日期范围限制
静态限制
注意:日期格式必须与 realDateFmt realTimeFmt 一致而不是与 dateFmt 一致你可以给通过配置minDate(最小日期),maxDate(最大日期)为静态日期值,来限定日期的范围
示例4-1-1 限制日期的范围是 2006-09-102008-12-20

<input id="d411" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen',minDate:'2006-09-10',maxDate:'2008-12-20'})"/>
示例4-1-2 限制日期的范围是 2008-3-8 11:30:00 2008-3-10 20:59:30

<input type="text" class="Wdate" id="d412" onfocus="WdatePicker({skin:'whyGreen',dateFmt:
'yyyy-MM-dd HH:mm:ss',minDate:'2008-03-08 11:30:00',maxDate:'2008-03-10 20:59:30'})" value="2008-03-09 11:00:00"/>
示例4-1-3 限制日期的范围是 20082 200810

<input type="text" class="Wdate" id="d413" onfocus="WdatePicker({dateFmt:'yyyyM',minDate:'2008-2',maxDate:'2008-10'})"/>
示例4-1-4 限制日期的范围是 8:00:00 11:30:00

<input type="text" class="Wdate" id="d414" onfocus="WdatePicker({dateFmt:'H:mm:ss',minDate:'8:00:00',maxDate:'11:30:00'})"/>
动态限制
注意:日期格式必须与 realDateFmt realTimeFmt 一致而不是与 dateFmt 一致你可以通过系统给出的动态变量,%y(当前年),%M(当前月)等来限度日期范围,你还可以通过{}进行表
达式运算,:{%d+1}:表示明天

动态变量表
格式
说明
%y
当前年
%M
当前月
%d
当前日
%ld
本月最后一天
%H
当前时
%m
当前分
%s
当前秒
{}
运算表达式,:{%d+1}:表示明天
#F{}
{}之间是函数可写自定义JS代码
示例4-2-1 只能选择今天以前的日期(包括今天)


<input id="d421" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"/>
示例4-2-2 js以6结尾的数字表达式使用了运算表达式 只能选择今天以后的日期(不包括今天)

<input id="d422" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"/>
示例4-2-3 只能选择本月的日期1号至本月最后一天

<input id="d423" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld'})"/>
示例4-2-4 只能选择今天7:00:00至明天21:00:00的日期


<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'})"/>
示例4-2-5 使用了运算表达式 只能选择 20小时前 30小时后 的日期

<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'})"/>
脚本自定义限制
注意:日期格式必须与 realDateFmt realTimeFmt 一致而不是与 dateFmt 一致系统提供了$dp.$D$dp.$DV这两个API来辅助你进行日期运算,此外你还可以通过在 #F{} 中填入你自定义的脚本,做任何你想做的日期限制
示例4-3-1 前面的日期不能大于后面的日期且两个日期都不能大于 2020-10-01
合同有效期从 
<input id="d4311" class="Wdate" type="text" onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4312\')||\'2020-10-01\'}'})"/>
<input id="d4312" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4311\')}',maxDate:'2020-10-01'})"/>

注意:
两个日期的日期格式必须相同

$dp.$ 相当于 ElementById 函数.
那么为什么里面的 ' 使用 \' ? 那是因为 " ' 都被外围的函数使用了,故使用转义符 \ ,否则会提示JS语法错误.
所以您在其他地方使用时注意把 \' 改成 " 或者 ' 来使用.

#F{$dp.$D(\'d4312\')||\'2020-10-01\'} 表示当 d4312 为空时, 采用 2020-10-01 的值作为最大值
示例4-3-2 前面的日期+3 不能大于 后面的日期
日期从 
<input type="text" class="Wdate" id="d4321" onFocus="WdatePicker({maxDate:'#F{$dp.$D(\'d4322\',{d:-3});}'})"/>
<input type="text" class="Wdate" id="d4322" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4321\',{d:3});}'})"/>

使用 $dp.$D 函数 可以将日期框中的值,加上定义的日期差量:
两个参数: id={字符类型}需要处理的文本框的id , obj={对象类型}日期差量
日期差量用法:
属性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小时
示例4-3-3 前面的日期+3月零2 不能大于 后面的日期 前面日期都不能大于 2020-4-3减去3月零2 后面日期 不能大于 2020-4-3
住店日期从 
<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})}'})"/>
<input type="text" class="Wdate" id="d4332" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d4331\',{M:3,d:2});}',maxDate:'2020-4-3'})"/>

注意:#F{$dp.$D(\'d4332\',{M:-3,d:-2}) || $dp.$DV(\'2020-4-3\',{M:-3,d:-2})}
表示当 d4332 为空时, 采用 $dp.$DV(\'2020-4-3\',{M:-3,d:-2})} 的值作为最大值
使用 $dp.$DV 函数 可以将显式传入的值,加上定义的日期差量:
两个参数: value={字符类型}需要处理的值 , obj={对象类型}日期差量
用法同上面的 $dp.$D 类似, $dp.$DV(\'2020-4-3\',{M:-3,d:-2}) 表示 2020-4-3减去3月零2
示例4-3-4 发挥你的JS才能,定义任何你想要的日期限制
自动转到随机生成的一天,当然,此示例没有实际的用途,只是为演示目的

<script>
//返回一个随机的日期
function randomDate(){
var Y = 2000 + und(Math.random() * 10);
var M = 1 + und(Math.random() * 11);
var D = 1 + und(Math.random() * 27);
return Y+'-'+M+'-'+D;
}
</script>
<input type="text" class="Wdate" id="d434" onFocus="var date=randomDate();WdatePicker({minDate:date,maxDate:date})"/>
1 无效天
可以使用此功能禁用周日至周六所对应的日期,相关属性:disabledDays (06 分别代表 周日至周六)
示例4-4-1 禁用 周六 所对应的日期

<input id="d441" type="text" class="Wdate" onFocus="WdatePicker({disabledDays:[6]})"/>
示例4-4-2 禁用 周六 周日 所对应的日期

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