日期控件選擇條件控制只能選擇當前日期之前或當前日期之后


需求: 在使用日期控件選擇日期的時候,只能選擇當前日期之前或當前日期之后的日期,如下圖

  

  當前日期之后的日期無法被選擇

 實現:

    只需要添加如下事件即可(紅色部分):

     <input id="registerDate" style="width: 154px;" value="<#if franInfo ?? && franInfo.registerDate ??>${(franInfo.registerDate?string('yyyy-MM-dd'))!''}</#if>" name="registerDate" type="text" class="easyui-validatebox easyui-datebox" 

     onfocus="WdatePicker({maxDate:'%yyyy-%MM-%dd'})" data-options="required:true,missingMessage:'注冊日期不能為空'" />

    如果想要只能選擇當前日期之后的日期,將maxDate改成minDate即可,如下:

    onfocus="WdatePicker({minDate:'%yyyy-%MM-%dd'})"

 

-----------------------以下資料來自網絡-------------------------------- 

更多關於WdatePicker的使用:

   

多語言和自定義皮膚

1. 多語言支持

通過lang屬性,可以為每個日期控件單獨配置語言,當然也可以通過WdatePicker.js配置全局的語言
語言列表和語言安裝說明詳見語言配置

示例3-1 多語言示例

繁體中文
<input id="d311" class="Wdate" type="text" onFocus="WdatePicker({lang:'zh-tw'})"/>

英文
<input id="d312" class="Wdate" type="text" onFocus="WdatePicker({lang:'en'})"/>

簡體中文
<input id="d313" class="Wdate" type="text" onFocus="WdatePicker({lang:'zh-cn'})"/>

注意:默認情況lang='auto',即根據瀏覽器的語言自動選擇語言.

 

2. 自定義和動態切換皮膚

通過skin屬性,可以為每個日期控件單獨配置皮膚,當然也可以通過WdatePicker.js配置全局的皮膚
皮膚列表和皮膚安裝說明詳見皮膚配置

 

示例3-2 皮膚演示

默認皮膚default: skin:'default'

<input id="d321" class="Wdate" type="text" onfocus="WdatePicker()"/>

注意:WdatePicker里配置了skin='default',所以此處可省略,同理,如果你把WdatePicker里的skin配置成'whyGreen'那么在不指定皮膚的情況下都使用'whyGreen'皮膚了

 


       whyGreen皮膚: skin:'whyGreen' 

<input id="d322" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen'})"/>

 

 

4. 日期范圍限制

1. 靜態限制
注意:日期格式必須與 realDateFmt 和 realTimeFmt 一致

你可以給通過配置minDate(最小日期),maxDate(最大日期)為靜態日期值,來限定日期的范圍

示例4-1-1 限制日期的范圍是 2006-09-10到2008-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 限制日期的范圍是 2008年2月 到 2008年10月
<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'})"/>

 

2. 動態限制
注意:日期格式必須與 realDateFmt 和 realTimeFmt 一致

你可以通過系統給出的動態變量,%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 使用了運算表達式只能選擇今天以后的日期(不包括今天)
<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'})"/>

 

3 . 腳本自定義限制
       注意:日期格式必須與 realDateFmt 和 realTimeFmt 一致

 

系統提供了$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.$ 相當於 document.getElementById 函數.
那么為什么里面的 ' 使用 \' 那是因為 和 都被外圍的函數使用了,故使用轉義符 \ ,否則會提示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分別代表年月日時分秒


 示例:想限制開始時間和結束時間只能選擇3天內的,也就是可以開始時間與結束時間的時間差可以為1天、2天和3天

<input type="text" id="beginTime" onfocus="WdatePicker({minDate:'#F{$dp.$D(\'endTime\',{d:-3})}',maxDate:'#F{$dp.$D(\'endTime\')||\'%y-%M-%d\'}',onpicked:function(){endTime.focus();}})"/>

<input type="text" id="endTime" onfocus="WdatePicker({maxDate:'#F{$dp.$D(\'beginTime\',{d:3})||\'%y-%M-%d\'}',minDate:'#F{$dp.$D(\'beginTime\')}'})"/>

<input type="reset" value="重選"/>

參考資料:

http://blog.csdn.net/wf4878921/article/details/8314526

http://blog.csdn.net/wanglei19880622/article/details/8051322

http://jingyan.baidu.com/article/e6c8503c7244bae54f1a18c7.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM