最初のレンダリング
JSP月の選択
<入力名= "SDATE" ID = "SDATE" クラス= "layui入力" レイキー= "17" タイプ= "テキスト" />
カスケード週
<選択名= "EDATE" ID = "EDATE" レイフィルタ= "edateFilter"> </ select>の
$(関数(){
initSelect(GETINFO( '<%= SDATE%>'));
laydate.render({
elemは: '#sdate'、
タイプ'月'変更:関数(値、DATE、endDateに){//月は周ドロップダウンボックスを選択したときにリセットする
。$( '#のSDATE')のval( 値);
$( '#のlayui-laydate17'))(削除;. //削除
initSelect(GETINFO(値));
}
});
});
関数initSelect(アレイ){
layui.use([ '形態']、関数(){
VAR形= layui.form;
$( '#1 EDATE')(空);
J <配列;(VARのJ = 0。長さ; J ++){
VAR OBJ =配列[J];
VARフラグ= isDateBetween( '<%= EDATE%>'、obj.from、obj.to);
VAR SS = '<オプション値= "' + + obj.from '==' + obj.to + '" ';
(フラグ){もし
、SS + ='選択'
CURR1 = obj.from; CURR2 = obj.to
}
SS + ='>' + FORMATNAME(J、OBJ .from、obj.to)+ '</オプション>';
$(「#EDATE)付録(SS)。
}
Form.render(「SELECT」);
});
}
/ **
*日付が間隔内の間隔で真リターンを決定し、そうでない場合はfalseに戻り
* @param日付ストリング日付列
間隔の開始日列をstartDateString * @param
インターバル終了日付列endDateString * @param
*ナンバー@Returns {}
* /
関数isDateBetween(日付ストリング、startDateString、endDateString)を{
(のisEmpty(日付ストリング)){IF
アラート( "空でない日付ストリング");
を返す;
}
IF( isEmpty(startDateString)){
アラート( "空でないstartDateString");
を返します;
}
IF(のisEmpty(endDateString)){
アラート( "endDateString不能为空")。
返します。
}
VARフラグ= FALSE。
VAR STARTFLAG =(dateCompare(日付ストリング、startDateString)<1)。
VaRのendFlag =(dateCompare(日付ストリング、endDateString)> -1)。
IF(STARTFLAG && endFlag){
フラグ= TRUE。
}
フラグを返します。
}。
関数dateCompare(日付ストリング、compareDateString){
IF(のisEmpty(日付ストリング)){
アラート( "日付ストリング不能为空")。
返します。
}
IF(のisEmpty(compareDateString)){
警告( "compareDateString不能为空");
返します。
}
VARのdateTime = dateParse(日付ストリング).getTime();
VAR compareDateTime = dateParse(compareDateString).getTime();
(compareDateTime> dateTimeの)場合は{
1を返します。
}(compareDateTime ==のdateTime)もしそうでなければ{
0を返します。
}他{
-1を返します。
}
}。
関数dateParse(日付ストリング){
VARのSEPARATOR_BAR = " - "。
VaRのSEPARATOR_SLASH = "/";
VAR SEPARATOR_DOT = "";
VAR DATEARRAY;
IF(dateString.indexOf(SEPARATOR_BAR)> -1){
DATEARRAY = dateString.split(SEPARATOR_BAR)。
}そうであれば(dateString.indexOf(SEPARATOR_SLASH)> -1){
DATEARRAY = dateString.split(SEPARATOR_SLASH)。
}他{
DATEARRAY = dateString.split(SEPARATOR_DOT)。
}
新しい日付を返す(DATEARRAY [0]、DATEARRAY [1] -1、DATEARRAY [2])。
}。
{(へ、からヴァル)関数FORMATNAME
VAR列str = '第'。
IF(ヴァル== 0){STR + = '一'。
}そうであれば(ヴァル== 1){STR + = '二'。
}そうであれば(ヴァル== 2){STR + = '三'。
}そうであれば(ヴァル== 3){STR + = '四'。
}そうであれば(ヴァル== 4){STR + = '五'。
}そうであれば(ヴァル== 5){STR + = '六'。
}そうであれば(ヴァル== 6){STR + = '七'。}
STR + = '周(';
VARのfromDateからは=新しい日付(から);
STR + =(fromDate.getMonth()+ 1)+ '月' + fromDate.getDate()+ '日';
STR + = ' - ';
VAR toDateまでは=新しいDate()は、
STR + =(toDate.getMonth()+ 1)+ '月' + toDate.getDate()+'日';
+ = STR '')。
STRを返します。
}
関数GETINFO(ヴァル){
VAR配列=新しいアレイ();
VAR年=のparseInt(val.split( ' - ')[0]、10)、
VARさd =新しいDate();
d.setFullYear(年、月-1、1);
VAR W1 = d.getDay()。
IF(W1 == 0)W1 = 7。
d.setFullYear(年、月、0);
VAR DD = d.getDate()。
(もし!W1 = 1)、D1 = 7 - W1 + 2。
他に、D1 = 1;
week_count = Math.ceil((DD-D1 + 1)/ 7)。
用(VAR i = 0; I <week_count; I ++){
VAR月曜日= D1 + iが7×。
VaRの日曜日=月曜日+ 6。
VAR =年+から' - ' + formatD(月)+ ' - ' + formatD(月曜日);
=「」へのVAR。
もし(日<= DD){
= +の年' - ' + formatD(月ザ・)+ ' - ' + formatD(日曜日);
}他{
d.setFullYear(年、月ザ・1、日曜日。);
d.getFullYearへ=()+ ' - ' + formatD (d.getMonth()+ 1)+ ' - ' + formatD(d.getDate());
}
場合は、最初の月曜日1か否かを判定(I == 0){//最初のサイクル結合していない場合Kuayue番号1は、円周含む
VARを= from.splitデータ( ' - ');
新しい=日付()VaRのMMは、新しい;
mm.setFullYear(DATA [0]、DATA [1] -1、DATA [ 2]);
VAR mm.getDate A =();
IF(A> 1){//ない数1件の。
VAR新しい新B =日付();
B.setFullYear(DATA [0]、DATA [1] -1、。-1)。
VaRのT = GetDay(B)。
VaRのF = GetMonday(B)。
VAR OBJ =新しいオブジェクト();
obj.from = F。obj.to = T;
(OBJ)のArray.push。
}
}
VAR OBJ =新しいオブジェクト();
obj.from =から。obj.to =へ。
(OBJ)のArray.push。
}
の配列を返します。
}
関数formatD(ヴァル){
VAR DD =のparseInt(ヴァル、10)。
IF(DD <10){
リターン'0' + DD。
}他{
戻りDD + '。
}
}
関数GetMonday(DD){
VAR dd.getDay週=(); //週番号取得時間
VARマイナス週週= - 1:?。6;
dd.setDate(dd.getDate() -マイナス); //取得マイナス日前の日付
VAR dd.getFullYear Y =();
VAR dd.getMonthメートル=()+ 1; //月を取得
(M <10)メートル= '0' + MのIF;
VAR D = dd.getDate ();
IF(D <10)D = '0' + Dは、
Y +を返す' - ' + M + ' - ' + D;
}
関数GetDay(DD){
VAR dd.getFullYear Y =();
VAR mを= dd.getMonth()+ 1; //取得月
IF(M <10)メートル= '0' + M;
VARのDD = D.getDate();
(D <10)、D =であれば'0' + D。
戻りY + ' - ' + M + ' - ' + D。
}