// 有効期限 // YYYY-MM-DD-HH-MM-SS var dateRangeArr = [ { "start": "2024-04-29-04-15-00", "end": "2024-04-30-04-15-00" } ]; $(function() { // 送信ボタンを押したときに、物件情報の有効期限をチェック var form = $('#formid'); $('#submitBtn').on('click',function(){ // 時間を取得 $.ajax({ type: "GET", cache: false }).done(function(data, status, xhr) { try { // サーバーの時間を取得 var date = new Date(xhr.getResponseHeader("Date")); } catch(e) { // 取得できなかった場合はローカルの時間を取得 var date = new Date(); } callback_func(date); }).fail(function() { // 取得できなかった場合はローカルの時間を取得 var date = new Date(); callback_func(date); }); // 有効期限が過ぎていたら、アラートを表示 setTimeout(function(){ var result = $('#result').text(); if( result == 1 ){ // alert( '大変申し訳ございません。\nお客様の操作が一定時間行われなかったため、自動的にタイムアウトしました。\nお手数ではございますが、再度フォーム画面よりご入力をお願いいたします。\n※日付をまたいだ場合、自動的にタイムアウトしてしまいます。' ); alert( '【タイムアウトエラー】\n大変申し訳ございません。\nお客様の操作が一定時間行われなかったため、自動的にタイムアウトしました。\nお手数ではございますが、一度ブラウザを落とした上で再度フォーム画面よりご入力をお願いいたします。\n※日付をまたいだ場合、自動的にタイムアウトしてしまいます。' ); return false; }else{ form.submit(); } },500); }); }); // サーバーの時間を取得した後に行う処理 function callback_func(currentDate) { // 結果に出力する内容 var error_flg = 0; for (var i = 0; i < dateRangeArr.length; i++) { // 開始日時 var st = format_date(dateRangeArr[i]["start"]); var startDate = new Date(st[0], st[1], st[2], st[3], st[4], st[5]); // 終了日時 var en = format_date(dateRangeArr[i]["end"]); var endDate = new Date(en[0], en[1], en[2], en[3], en[4], en[5]); var result = current_time_range_contains(currentDate, startDate, endDate); if(!result) { // 有効期限が過ぎた後にクリックされていた場合 error_flg = 1; } } $('#result').text(error_flg); } // 現在時刻が指定範囲内かどうかを調べる function current_time_range_contains(currentDate, startDate, endDate) { var currentTimestamp = currentDate.getTime(); var startTimestamp = startDate.getTime(); var endTimestamp = endDate.getTime(); if(startTimestamp <= currentTimestamp && currentTimestamp <= endTimestamp) { return true; } else { return false; } } // ハイフン区切りの日付を整形 function format_date(date) { var dateArr = date.split("-"); // 2桁の数値で先頭が0の場合は除去する for (var i = 0; i < dateArr.length; i++) { dateArr[i] = Number(dateArr[i]); } // 月は-1しておく if(dateArr.length >= 2) { dateArr[1] = dateArr[1] - 1; } // 足りていない値の補足 while(dateArr.length < 6) { // 日が足りていない場合は1、それ以外は0を追加する if(dateArr.length === 2) { dateArr[dateArr.length] = 1; } else { dateArr[dateArr.length] = 0; } } return dateArr; }