본 글의 예시에서는 JQuery 캘린더 플러그인 My97DatePicker의 날짜 범위 제한 방식을 소개하고 있으며, 참고용으로 공유합니다
```c497a33d8112adf7039c76f5cf8ee6b8
다음은 날짜 범위 제한 사항을 강조한 것입니다.
1) 정적 제한
minDate(최소 날짜) 및 maxDate(최대 날짜)를 정적 날짜 값으로 구성하여 날짜 범위를 제한할 수 있습니다
예 1.1: 제한 기간은 2012-12-1부터 2012-12-20입니다
예 1.2: 제한 기간은 2012-12-4 21:30:00 ~ 2012-12-4 23:59:30
예 1.3: 제한 기간은 2012년 12월부터 2013년 12월까지입니다
예 1.4: 제한 시간 범위는 9:00:00~18:30:00
예 2.2: 은 연산식을 사용합니다. 오늘 이후의 날짜만 선택할 수 있습니다(오늘 제외).
예 2.3: 이번 달 1일부터 말일까지만 날짜를 선택할 수 있습니다
예 2.4: 오늘 7:00:00부터 내일 21:00:00
까지의 날짜만 선택할 수 있습니다.
예 2.5: 은 연산식을 사용하며 20시간 전부터 30시간 후까지의 날짜만 선택할 수 있습니다
3) 스크립트 사용자 정의 제한
시스템은 날짜 계산에 도움이 되는 두 가지 API인 $dp.$D와 $dp.$DV를 제공합니다. 또한 #F{}에 사용자 지정 스크립트를 입력하여 원하는 작업을 수행할 수도 있습니다. 🎜>
예 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'})"/>
예 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});}'})"/>
예 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'})"/>
예 3.4: JS 재능을 활용하여 원하는 날짜 제한을 정의하세요
물론 무작위로 생성된 날짜로 자동 이동합니다. 물론 이 예는 실용성은 없으며 시연 목적으로만 사용됩니다
<script> //返回一个随机的日期 function randomDate(){ var Y = 2000 + Math.round(Math.random() * 10); var M = 1 + Math.round(Math.random() * 11); var D = 1 + Math.round(Math.random() * 27); return Y+'-'+M+'-'+D; } </script> <input type="text" class="Wdate" id="d434" onFocus="var date=randomDate();WdatePicker({minDate:date,maxDate:date})"/>
4) 유효하지 않은 날짜 제한
이 함수를 사용하여 일요일부터 토요일까지의 날짜를 비활성화할 수 있습니다. 관련 속성: 비활성화된 날짜(0부터 6까지 각각 일요일부터 토요일을 나타냄)
예 4.1: 토요일에 해당하는 날짜 비활성화
5)无效日期限制 示例5.2:禁用 所有早于2000-01-01的日期 示例5.3:配合min/maxDate使用,可以把可选择的日期分隔成多段 示例5.4:min/maxDate disabledDays disabledDates 配合使用 即使在要求非常苛刻的情况下也能满足需求 示例5.5:禁用前一个小时和后一个小时内所有时间 使用 %y %M %d %H %m %s 等变量 示例5.6: #F{}也是可以使用的 6)有效日期 7) 특별한 날과 날짜 예 7.2: 매월 1일과 15일 강조 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
可以使用此功能禁用,所指定的一个或多个日期,只要熟悉正则表达式,可以尽情发挥
用法(正则匹配):
如果你熟悉正则表达式,会很容易理解下面的匹配用法
如果不熟悉,可以参考下面的常用示例
['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日
```<input id="d451" type="text" class="Wdate" onFocus="WdatePicker({disabledDates:['5$']})"/>
//注意 :'5$' 表示以 5 结尾 注意 $ 的用法
```<input id="d452" type="text" class="Wdate" onFocus="WdatePicker({disabledDates:['^19']})"/>
//注意:'^19' 表示以 19 开头 注意 ^ 的用法
//当然,可以使用minDate实现类似的功能 这里主要是 在演示 ^ 的用法
本示例利用自定义函数 随机禁用0-23中的任何一个小时
打开小时选择框,你会发现有一个小时被禁用的,而且每次禁用的小时都不同
<script>
function randomH(){
//产生一个随机的数字 0-23
var H = Math.round(Math.random() * 23);
if(H<10) H='0'+H;
//返回 '^' + 数字
return '^'+H;
}
</script>
<input type="text" class="Wdate" id="d456" onFocus="WdatePicker({dateFmt:'HH:mm:ss',disabledDates:['#F{randomH()}']})"/>
使用无效日期可以很方便的禁用不可用的日期,但是在只需要启用少部分日期的情况下,有效日期的功能就非常适合了.
关键属性: opposite 默认为false, 为true时,无效日期变成有效日期,该属性对无效天,特殊天不起作用
示例6.1:只启用 每个月份的 5日 15日 25日
```<input id="d46" type="text" class="Wdate" onFocus="WdatePicker({opposite:true,disabledDates:['5$']})"/>
//注意 :'5$' 表示以 5 结尾 注意 $ 的用法
특별일 및 특별일의 사용법은 완전히 무효일 및 무효일과 동일하지만 반대속성은 무효입니다
주요 속성:
SpecialDays(0~6은 각각 일요일~토요일을 나타냄) 사용법은 유효하지 않은 날과 동일합니다
SpecialDates의 사용법은 유효하지 않은 날짜와 동일하지만 시, 분, 초에 대해서는 유효하지 않습니다
예 7.1: 월요일 금요일 강조