/*
Ver 1.15.0
物件建立:
※請修改[物件ID]部分
函數調用需再 jQuery 1.9.1 ~ 3.3.1 環境使用
以下為可調用函數
定義時間選擇器 > TimePickSetting({選填項目}) 或 $('#物件ID').TimeSetting({選填項目})
取得時間選擇器選取數值 > var pick = TimePickGet(物件ID) 或 $('#物件ID').TimeGet()
修改{選填項目}參數 > TimePickSettingChange(物件ID , {選填項目}) 或 $('#物件ID').TimeSettingChange({選填項目})
手動呼叫日曆 > TimePickCell($(this) , 物件ID)
※放在按鈕的 onclick 事件之中即可
時間資料轉換工具 > TimePickDateConvertHelper(時間字串或物件 , 格式化字串)
查詢儲存陣列 > TimePickTempData[物件ID]
取選取的值 > TimePickTempData[物件ID].Pick
※Time為毫秒數,Format為自訂格式字串,ROCFormat為民國年自訂格式字串,String為時間字串,ROCString為民國年時間字串,Object為時間物件
※若無選取的話 Pick 物件則為 null,請特別注意
定義下拉選單 選填項目:*物件ID ID (必填項目無預設) ※若ID相同則會被覆蓋
顯示模式 Mode (預設:'Drop') ※僅電腦上執行有效,Drop 為下拉模式,Float 為浮動模式(出現在螢幕中間的)
日期顯示格式 Format (預設:'yyyy-MM-dd HH:mm:ss') ※yyyy:年、MM:月、dd:日、HH:24小時、mm:分鐘、ss:秒
設定初始時間 DefaultDate (預設:null 尚未選取) ※設定格式為西元年 '2017-01-31 22:50:45' 或 new Date() 都可以
是否可選擇日期 DatePick (預設:true)
是否可選擇時間 TimePick (預設:false)
是否可選擇秒 SecondsPike (預設:false)
箭頭切換圖標-左 PrevArrow (預設:'')
箭頭切換圖標-右 NextArrow (預設:'')
日曆圖示 CalendarIcon (預設:'')
是否開啟時間顯示 TextView (預設:true)
點選日期後自動關閉 PickAuto (預設:false) ※此功能僅針對日期響應,開啟後將會隱藏操作按鈕列
按鈕預設文字 ButtonText (預設:'尚未設定') ※開啟時間顯示才會作用
設定按鈕Class Class (預設:'button_l btn_sky_l')
設定按鈕Style Style (預設:'') ※使用css語法,打成字串,只有靜態建立有效,動態建立請直接設定DOM物件
顯示為民國年 ROC (預設:false) ※僅顯示文字為民國年,輸出值仍然為西元年
何時之前不能選 DisabledAbove (預設:null) ※設定格式為西元年 '2017-01-31',包含設定當日,切勿輸入時間,會失效
何時之後不能選 DisabledBelow (預設:null) ※設定格式為西元年 '2017-02-15',包含設定當日,切勿輸入時間,會失效
年分選擇起始年份 YearRangeStart (預設:10) ※設定10,即為年份下拉選單的選項顯示從10年前開始算
年分選擇結尾年份 YearRangeEnd (預設:10) ※設定10,即為年份下拉選單的選項顯示最多算到10年後
設定單位文字 TimeText (預設:{ AD: '西元', ROC: '民國', Year: '年', Month: '月', Day: '日', Hours: '時', Minutes: '分', Seconds: '秒' })
設定月份文字 MonthsText (預設:['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'])
設定星期文字 WeekdaysText (預設:['週日', '週一', '週二', '週三', '週四', '週五', '週六'])
選擇器與按鈕的間距 ListSpace (預設:2)
超出視窗位移選單 MoveList (預設:true) ※顯示模式為 'Drop' 下拉模式且使用者於電腦裝置時會使用,行動裝置為浮動模式不需要
使用手動控制選單位移量 MoveListCtrl (預設:null,設定時請使用 { Top: 0, Left: 0 } ) ※只有開啟[超出視窗位移選單]功能開啟才會生效
日曆開始時事件 OnOpen (預設:null,設定時請使用 function (Name) { } )
日曆選取值變換時事件 OnChange (預設:null,設定時請使用 function (Pick, Name) { } )
日曆關閉時事件 OnClose (預設:null,設定時請使用 function (Pick, Name) { } )
*/
//取得使用者瀏覽器
TimePickGetBrowser = function () {
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
return Sys;
}
//時間Format函數
Date.prototype.TimePickFormat = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
//宣告專用變數儲存物件
var TimePickTempData = {};
var TimePickTempOnEndName = null;
var TimePickBrowser = TimePickGetBrowser();
var TimePickTempCloseEvent;
var TimePickTempCloseName;
var TimePickTempNowName = null;
//定義時間選擇器
TimePickSetting = function (Setting) {
//參數驗證 / 預設值賦予
var Success = true;
if (!Setting) {
console.info('缺乏參數[Setting]設定!');
Success = false;
} else {
//數值判斷 物件ID (必填)
if (Setting.ID == undefined) {
console.info('缺乏物件[ID]參數設定!');
Success = false;
}
//物件名稱 (舊的用不到了 直接同步ID)
Setting.Name = Setting.ID;
//日期顯示格式
if (Setting.Format == undefined) {
Setting.Format = 'yyyy-MM-dd HH:mm:ss';
//Setting.Format = 'yyyy年MM月dd日 HH時mm分ss秒';
}
//設定初始時間 (套用標準化時間字串)
if (Setting.DefaultDate == undefined) {
Setting.DefaultDate = null;
//設置 取值物件 Pick 變數
Setting.Pick = null;
} else {
//標準化時間字串 (為了相容IE跟Edge)
Setting.DefaultDate = TimePickFormatDate(Setting.DefaultDate);
//設置 取值物件 Pick 變數
Setting.Pick = {
Time: new Date(Setting.DefaultDate).getTime(),
Format: new Date(Setting.DefaultDate).TimePickFormat(Setting.Format),
ROCFormat: new Date(Setting.DefaultDate).TimePickFormat(Setting.Format).replace(new Date(Setting.DefaultDate).getFullYear(), (new Date(Setting.DefaultDate).getFullYear() - 1911)),
String: new Date(Setting.DefaultDate).TimePickFormat('yyyy-MM-dd HH:mm:ss'),
ROCString: (new Date(Setting.DefaultDate).getFullYear() - 1911) + new Date(Setting.DefaultDate).TimePickFormat('-MM-dd HH:mm:ss'),
Object: new Date(Setting.DefaultDate)
};
}
//DatePick
if (Setting.DatePick == undefined) {
Setting.DatePick = true;
}
//顯示模式
if (Setting.Mode == undefined) {
Setting.Mode = 'Drop';
}
//是否可選擇時間
if (Setting.TimePick == undefined) {
Setting.TimePick = false;
}
//是否可選擇秒
if (Setting.SecondsPike == undefined) {
Setting.SecondsPike = false;
}
//箭頭切換圖標-左
if (Setting.PrevArrow == undefined) {
Setting.PrevArrow = '';
}
//箭頭切換圖標-右
if (Setting.NextArrow == undefined) {
Setting.NextArrow = '';
}
//日曆圖示
if (Setting.CalendarIcon == undefined) {
Setting.CalendarIcon = '';
}
//是否開啟時間顯示
if (Setting.TextView == undefined) {
Setting.TextView = true;
}
//點選日期後自動關閉
if (Setting.PickAuto == undefined) {
Setting.PickAuto = false;
}
//按鈕預設文字
if (Setting.ButtonText == undefined) {
Setting.ButtonText = '尚未設定';
}
//設定按鈕Class
if (Setting.Class == undefined) {
Setting.Class = 'button_l btn_sky_l';
}
//設定按鈕Style
if (Setting.Style == undefined) {
Setting.Style = '';
}
//顯示為民國年
if (Setting.ROC == undefined) {
Setting.ROC = false;
}
//何時之前不能選 (套用標準化時間字串)
if (Setting.DisabledAbove == undefined) {
Setting.DisabledAbove = null;
} else {
Setting.DisabledAbove = TimePickFormatDate(Setting.DisabledAbove).TimePickFormat('yyyy-MM-dd');
}
//何時之後不能選 (套用標準化時間字串)
if (Setting.DisabledBelow == undefined) {
Setting.DisabledBelow = null;
} else {
Setting.DisabledBelow = TimePickFormatDate(Setting.DisabledBelow).TimePickFormat('yyyy-MM-dd');
}
//年分選擇起始年份
if (Setting.YearRangeStart == undefined) {
Setting.YearRangeStart = 10;
}
//年分選擇結尾年份
if (Setting.YearRangeEnd == undefined) {
Setting.YearRangeEnd = 10;
}
//設定單位文字
if (Setting.TimeText == undefined) {
Setting.TimeText = { AD: '西元', ROC: '民國', Year: '年', Month: '月', Day: '日', Hours: '時', Minutes: '分', Seconds: '秒' };
}
//設定月份文字
if (Setting.MonthsText == undefined) {
Setting.MonthsText = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
}
//設定星期文字
if (Setting.WeekdaysText == undefined) {
Setting.WeekdaysText = ['週日', '週一', '週二', '週三', '週四', '週五', '週六'];
//Setting.WeekdaysText = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
}
//選擇器與按鈕的間距
if (Setting.ListSpace == undefined) {
Setting.ListSpace = 2;
}
//超出視窗位移選單
if (Setting.MoveList == undefined) {
Setting.MoveList = true;
}
//使用手動控制選單位移量
if (Setting.MoveListCtrl == undefined) {
Setting.MoveListCtrl = null;
}
//日曆開始時事件
if (Setting.OnOpen == undefined) {
Setting.OnOpen = null;
}
//日曆選取值變換時事件
if (Setting.OnChange == undefined) {
Setting.OnChange = null;
}
//日曆關閉時事件
if (Setting.OnClose == undefined) {
Setting.OnClose = null;
}
}
//驗證確認 若失敗則不填入資料
if (Success == false) {
return;
}
//若有 指定建立選單物件ID 則建立呼叫按鈕
if (Setting.ID != null) {
//主動帶入 class (先移除再增加)
$('#' + Setting.ID).removeClass('TimePick');
$('#' + Setting.ID).addClass('TimePick');
//顯示文字判斷
var TempString = '';
if (Setting.TextView == true) {
if (Setting.Pick == null) {
TempString = Setting.ButtonText;
} else {
//依照使用者設定格式化執行
TempString = Setting.Pick.Object.TimePickFormat(Setting.Format);
//判斷是否為ROC
if (Setting.ROC == true) {
//西元年 直接取代成 民國年
TempString = TempString.replace(new Date(Setting.DefaultDate).getFullYear(), (new Date(Setting.DefaultDate).getFullYear() - 1911));
}
}
TempString = TempString + ' ';
}
//先清除
$('#' + Setting.ID).empty();
//建立呼叫按鈕
$('#' + Setting.ID).append('');
}
//填入資料
TimePickTempData[Setting.Name] = Setting;
};
//呼叫日曆
TimePickCell = function (Event, Name) {
//如果開啟中 直接開啟另一個選擇器時 則先觸發前一個選擇器的 OnClose
if (TimePickTempNowName != null && TimePickTempData[TimePickTempNowName].OnClose != null) {
TimePickTempData[TimePickTempNowName].OnClose(TimePickTempData[TimePickTempNowName].Pick, TimePickTempNowName);
}
//紀錄目前使用的名稱
TimePickTempNowName = Name;
//紀錄點擊空白及ESC時關閉選單用資料物件及名稱
TimePickTempCloseEvent = Event;
TimePickTempCloseName = Name;
//紀錄當前按鈕文字、物件 (取消按鈕用)
TimePickTempData[Name].CloseText = $(Event).parent().find('.TimePickText').html();
TimePickTempData[Name].ClosePick = TimePickTempData[Name].Pick;
//如果選擇器已經是開啟狀態 就不做動作
if ($(Event).parent().find('.TimePickSelect').css('display') == 'block') {
return;
}
//執行 OnOpen 函數
if (TimePickTempData[Name].OnOpen != null) {
TimePickTempData[Name].OnOpen(Name);
}
//關閉非使用的所有選單
$('.TimePickSelect').hide(200);
//清除選擇器容器
$(Event).parent().find('.TimePickSelect').remove();
//填入選擇器容器
$(Event).parent().append('');
//隱藏選擇器容器
$(Event).parent().find('.TimePickSelect').hide();
//判斷是否為行動裝置 若不是就定位選單位置 /(android|iphone|ipad|ipod);?/i
if (navigator.userAgent.toLowerCase().match(/(android|iphone|ipad|ipod);?/i)) {
//行動裝置的話就套用專用的 Css
$(Event).parent().find('.TimePickSelect').addClass('TimePickSelect_Phone');
//依照解析度調整位置跟大小
TimePickSelectResize();
} else {
//判斷顯示模式
if (TimePickTempData[Name].Mode == 'Drop') {
//下拉選單模式 (定位容器 垂直位置)
$(Event).parent().find('.TimePickSelect').css({
top: $(Event).height() + parseInt($(Event).css('padding-top').replace('px', '')) + parseInt($(Event).css('padding-bottom').replace('px', '')) + TimePickTempData[Name].ListSpace
});
} else if (TimePickTempData[Name].Mode == 'Float') {
//浮動模式 (套用行動裝置的 Css)
$(Event).parent().find('.TimePickSelect').addClass('TimePickSelect_Phone');
//調整位置跟大小
var WindowWidth = window.innerWidth;
if (WindowWidth <= 1024) {
$('.TimePickSelect').css({
top: '25%',
zoom: 1
});
}
if (WindowWidth > 1024) {
$('.TimePickSelect').css({
top: '25%',
zoom: 1.15
});
}
if (WindowWidth > 1600) {
$('.TimePickSelect').css({
top: '25%',
zoom: 1.3
});
}
}
}
//====================================== Header 年份月份星期 ======================================
//取得年份建立文字
var YearText = TimePickTempData[Name].TimeText.AD;
if (TimePickTempData[Name].ROC == true) {
YearText = TimePickTempData[Name].TimeText.ROC;
}
//建構容器
$(Event).parent().find('.TimePickSelect').append(
//Header
'' +
//DateBox
'');
//判斷是否需要時間選擇
if (TimePickTempData[Name].TimePick == true) {
$(Event).parent().find('.TimePickSelect').append(
//TimeBox
'' +
':' +
'' +
'
');
}
//判斷是否需要秒數選擇
if (TimePickTempData[Name].TimePick == true && TimePickTempData[Name].SecondsPike == true) {
$(Event).parent().find('.TimePickSelect .TimePickTimeBox').append(
':');
}
//填入按鈕 (點選日期後自動關閉 功能沒開啟才填入按鈕)
if (TimePickTempData[Name].PickAuto == false) {
$(Event).parent().find('.TimePickSelect').append(
//Work
'' +
'' +
' ' +
'' +
'
');
} else {
$(Event).parent().find('.TimePickSelect').append(
//Work
'' +
'' +
'' +
'
');
}
//取得年份月份設定時間
var DefaultDate = new Date();
if (TimePickTempData[Name].DefaultDate != null) {
DefaultDate = new Date(TimePickTempData[Name].DefaultDate);
}
//計算年份下拉選單矩陣
var YearOptionStart = DefaultDate.getFullYear() - TimePickTempData[Name].YearRangeStart;
var YearOptionEnd = DefaultDate.getFullYear() + TimePickTempData[Name].YearRangeEnd;
//填入年份下拉選單
for (var i = YearOptionStart; i <= YearOptionEnd; i++) {
//判斷民國年顯示
var TempYear = i;
if (TimePickTempData[Name].ROC == true) {
TempYear = TempYear - 1911;
}
$(Event).parent().find('.TimePickSelect .TimePickTitle_SelectOption_Year').append(
'');
}
//填入月份下拉選單
for (var i = 0; i < TimePickTempData[Name].MonthsText.length; i++) {
$(Event).parent().find('.TimePickSelect .TimePickTitle_SelectOption_Month').append(
'');
}
//賦予開啟年份月份設定
var SetDate = new Date();
if (TimePickTempData[Name].Pick != null) {
SetDate = TimePickTempData[Name].Pick.Object;
}
//呼叫日曆建構函數
TimePickBuild(Event, Name, {
Mode: 'PickCell',
SetDate: SetDate
});
//顯示選擇器容器
$(Event).parent().find('.TimePickSelect').show(200, function () {
var TimpPickEvent = $(Event).parent();
//判斷是否有使用 超出視窗位移下拉選單
if (TimePickTempData[Name].MoveList == true) {
//行動裝置不需要位移判斷
if (!navigator.userAgent.match(/(android|iphone|ipad|ipod);?/i)) {
//判斷是否需要調整位置
var tempEvenTop = TimpPickEvent.find('.TimePickSelect').offset().top + TimpPickEvent.find('.TimePickSelect').height() - $('html')[0].scrollTop;
var tempEvenRight = TimpPickEvent.find('.TimePickSelect').offset().left + TimpPickEvent.find('.TimePickSelect').width() - $('html')[0].scrollLeft + 40;
var tempBodyH = window.innerHeight; //$('body').height();
var tempBodyW = window.innerWidth; //$('body').width();
//判斷是否有使用 使用手動控制選單位移量 MoveListCtrl
if (TimePickTempData[Name].MoveListCtrl != null) {
//位移
TimpPickEvent.find('.TimePickSelect').animate({
top: TimePickTempData[Name].MoveListCtrl.Top,
left: TimePickTempData[Name].MoveListCtrl.Left,
}, 300);
} else {
//計算位移量
var tempTop = tempBodyH - tempEvenTop;
var tempLeft = tempBodyW - tempEvenRight;
//位移
if (tempEvenRight > tempBodyW &&
tempEvenTop > tempBodyH) {
TimpPickEvent.find('.TimePickSelect').animate({
top: tempTop,
left: tempLeft
}, 300);
} else if (tempEvenRight > tempBodyW) {
TimpPickEvent.find('.TimePickSelect').animate({
left: tempLeft
}, 300);
} else if (tempEvenTop > tempBodyH) {
TimpPickEvent.find('.TimePickSelect').animate({
top: tempTop
}, 300);
}
}
}
}
});
//防止點擊選項時關閉選單
$('.TimePick').click(function (event) {
event.stopPropagation();
//判斷關閉下拉選單
if ($('.DropListSelect').not('.DropListSelect_List').length > 0) {
//判斷是否有 OnEnd 函數可執行
if (DropListTempOnEndName != null) {
//清單模式不執行
if (DropListTempData[DropListTempOnEndName].Mode != 'list') {
DropListTempData[DropListTempOnEndName].OnEnd(DropListTempData[DropListTempOnEndName].Select, DropListTempOnEndName);
}
DropListTempOnEndName = null;
}
//關閉所有選單 (除了清單模式)
$('.DropListSelect').not('.DropListSelect_List').hide(200, function () {
//清除所有選單容器
$('.DropListSelect').not('.DropListSelect_List').remove();
});
}
});
};
//日曆建構函數
TimePickBuild = function (Event, Name, Setting) {
//Setting = {
// Mode: 'PickCell', ※模式:PickCell下拉呼叫、ArrowBtn箭頭呼叫、PickBtn選取按鈕、RestoreBtn恢復預設按鈕、SelectOption時間下拉選單
// SetDate: SetDate, ※指定時間
//};
//====================================== DateBox 日期 ======================================
//若操作年份下拉選單時 不修改
if (Setting.Mode != 'YearMonth' && Setting.Mode != 'TimePick') {
//指定選取年份
$(Event).parent().find('.TimePickSelect .TimePickTitle_SelectOption_Year')[0].value = Setting.SetDate.getFullYear();
//指定選取月份
$(Event).parent().find('.TimePickSelect .TimePickTitle_SelectOption_Month')[0].value = Setting.SetDate.getMonth();
}
//若操作時間下拉選單時 不修改
if (Setting.Mode != 'TimePick') {
//計算日期矩陣
var MonthPeriod = TimePickGetMonthPeriod(Setting.SetDate.getFullYear(), (Setting.SetDate.getMonth() + 1));
//取得這個月第一天的星期位置 取得的數值 就是前面要增加的天數
var InsertAbove = new Date(MonthPeriod.StartDate).getDay();
//取得這個月總天數
var ThisDateDay = new Date(MonthPeriod.EndDate).getDate();
//取得這個月最後一天的星期位置 6減去取得的數值 就是後面要增加的天數
var InsertBelow = 6 - new Date(MonthPeriod.EndDate).getDay();
//判斷是否滿42天 如果沒有滿就補足
var InsertDaySum = InsertAbove + ThisDateDay + InsertBelow;
if (InsertDaySum != 42) {
InsertBelow = InsertBelow + (42 - InsertDaySum);
}
//暫時套用到陣列 一天等於86400000毫秒 (24 * 60 * 60 * 1000)
var TempArray = [];
//補足之前天數
for (var i = InsertAbove; i > 0; i--) {
TempArray.push({
Type: 'Above',
//String: new Date(new Date(MonthPeriod.StartDate).getTime() - (86400000 * i)).TimePickFormat('yyyy-MM-dd HH:mm:ss'),
Object: new Date(new Date(MonthPeriod.StartDate).getTime() - (86400000 * i))
});
}
//當月天數 (套用標準化時間字串)
for (var i = 0; i < ThisDateDay; i++) {
var TempObject;
//判斷如果是IE或safari就要標準化
if (TimePickBrowser.chrome || TimePickBrowser.firefox) {
TempObject = new Date(Setting.SetDate.getFullYear() + '-' + (Setting.SetDate.getMonth() + 1) + '-' + (i + 1))
} else {
TempObject = new Date(TimePickFormatDate(Setting.SetDate.getFullYear() + '-' + (Setting.SetDate.getMonth() + 1) + '-' + (i + 1)))
}
TempArray.push({
Type: 'This',
Object: TempObject
});
}
//補足之後天數
for (var i = 0; i < InsertBelow; i++) {
TempArray.push({
Type: 'Below',
Object: new Date(new Date(MonthPeriod.EndDate).getTime() + (86400000 * (i + 1)))
});
}
//分析 選取、今天日期、何時之前不能選、何時之後不能選
//取 選取 時間
var TempCheckPickDate = null;
if (TimePickTempData[Name].Pick != null) {
TempCheckPickDate = TimePickTempData[Name].Pick.Object.TimePickFormat('yyyy-MM-dd');
}
//取 今天日期 時間
var TempCheckToday = new Date().TimePickFormat('yyyy-MM-dd');
//取得 何時之前不能選 時間
var TempCheckDisabledAbove = null;
if (TimePickTempData[Name].DisabledAbove != null) {
TempCheckDisabledAbove = new Date(TimePickTempData[Name].DisabledAbove).TimePickFormat('yyyy-MM-dd');
}
//取得 何時之後不能選 時間
var TempCheckDisabledBelow = null;
if (TimePickTempData[Name].DisabledBelow != null) {
TempCheckDisabledBelow = new Date(TimePickTempData[Name].DisabledBelow).TimePickFormat('yyyy-MM-dd');
}
//取得 年份範圍
var TempCheckDefaultDate = new Date();
if (TimePickTempData[Name].DefaultDate != null) {
TempCheckDefaultDate = new Date(TimePickTempData[Name].DefaultDate);
}
var TempCheckDisabledYear = (TempCheckDefaultDate.getFullYear() - TimePickTempData[Name].YearRangeStart) + '-01-01';
var TempCheckDisabledEnd = (TempCheckDefaultDate.getFullYear() + TimePickTempData[Name].YearRangeEnd) + '-12-31';
var TempCheckPrevArrowDisabled = false;
var TempCheckNextArrowDisabled = false;
//比對
for (var i = 0; i < TempArray.length; i++) {
var TempCheck = TempArray[i].Object.TimePickFormat('yyyy-MM-dd');
if (TempCheck == TempCheckPickDate) {
//判斷是否為預設選取
TempArray[i].Type = 'Select';
} else if (TempCheck == TempCheckToday) {
//判斷有沒有今天日期
TempArray[i].Type = 'Today';
} else if (TempCheck < TempCheckDisabledYear || TempCheck > TempCheckDisabledEnd) {
//判斷有沒有超過限制年份範圍
TempArray[i].Type = 'Disabled';
} else if (TempCheck <= TempCheckDisabledAbove || TempCheck >= TempCheckDisabledBelow) {
//判斷有沒有小於限制日期
TempArray[i].Type = 'Disabled';
}
//判斷箭頭是否隱藏
if (TempCheck <= TempCheckDisabledYear) {
TempCheckPrevArrowDisabled = true;
}
if (TempCheck >= TempCheckDisabledEnd) {
TempCheckNextArrowDisabled = true;
}
}
//只要這個月有 TempCheckPrevArrowDisabled 或 TempCheckNextArrowDisabled 就要隱藏箭頭,都沒有的話就顯示
$(Event).parent().find('.TimePickSelect .TimePickPrevArrow').show();
$(Event).parent().find('.TimePickSelect .TimePickNextArrow').show();
if (TempCheckPrevArrowDisabled == true) {
$(Event).parent().find('.TimePickSelect .TimePickPrevArrow').hide();
}
if (TempCheckNextArrowDisabled == true) {
$(Event).parent().find('.TimePickSelect .TimePickNextArrow').hide();
}
//宣告巢狀矩陣
TimePickTempData[Name].TableDate = [];
//將暫存陣列 分析成巢狀矩陣
for (var i = 0; i < TempArray.length;) {
TimePickTempData[Name].TableDate.push([
TempArray[i],
TempArray[i + 1],
TempArray[i + 2],
TempArray[i + 3],
TempArray[i + 4],
TempArray[i + 5],
TempArray[i + 6]
]);
i = i + 7;
}
//先清空 TimePickTable
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tbody').empty();
//放置日期span 依照內存參數判斷顯示class -------------------------------- 按鈕呼叫處
for (var i = 0; i < TimePickTempData[Name].TableDate.length; i++) {
//填入 tr
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tbody').append('
');
//放入 td
for (j = 0; j < TimePickTempData[Name].TableDate[i].length; j++) {
//依照type調整class
if (TimePickTempData[Name].TableDate[i][j].Type == 'Above' || TimePickTempData[Name].TableDate[i][j].Type == 'Below') {
//不是這個月 Above Below (可點擊)
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tr:last').append(
'' + TimePickTempData[Name].TableDate[i][j].Object.getDate() + ' | ');
} else if (TimePickTempData[Name].TableDate[i][j].Type == 'Disabled') {
//不可選取 Disabled
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tr:last').append(
'' + TimePickTempData[Name].TableDate[i][j].Object.getDate() + ' | ');
} else if (TimePickTempData[Name].TableDate[i][j].Type == 'Select') {
//預設選取 Select
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tr:last').append(
'' + TimePickTempData[Name].TableDate[i][j].Object.getDate() + ' | ');
} else if (TimePickTempData[Name].TableDate[i][j].Type == 'Today') {
//今日 Today (可點擊)
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tr:last').append(
'' + TimePickTempData[Name].TableDate[i][j].Object.getDate() + ' | ');
} else {
//剩下就是空的 This (可點擊)
$(Event).parent().find('.TimePickSelect .TimePickDateBox .TimePickTable tr:last').append(
'' + TimePickTempData[Name].TableDate[i][j].Object.getDate() + ' | ');
}
}
}
}
//如果設定為關閉 則隱藏日期選擇區塊
if (TimePickTempData[Name].DatePick == false) {
$('.TimePickHeader').hide();
$('.TimePickDateBox').hide();
$('.TimePickTimeBox').css('border-top', '0');
}
//====================================== TimeBox 時間 ======================================
//時間選擇 select 內部的 option (只有按鈕呼叫時才需要建構)
if (Setting.Mode == 'PickCell') {
//填入小時下拉選單
for (var i = 0; i < 24; i++) {
$(Event).parent().find('.TimePickSelect .TimePickTimeBox_SelectOption_Hours').append(
'');
}
//填入分鐘下拉選單
for (var i = 0; i < 60; i++) {
$(Event).parent().find('.TimePickSelect .TimePickTimeBox_SelectOption_Minutes').append(
'');
}
//填入秒下拉選單
for (var i = 0; i < 60; i++) {
$(Event).parent().find('.TimePickSelect .TimePickTimeBox_SelectOption_Seconds').append(
'');
}
}
//判斷是否需要指定選取時間 (箭頭選擇、選擇按鈕不指定)
if (Setting.Mode == 'PickCell' || Setting.Mode == 'RestoreBtn') {
if (TimePickTempData[Name].TimePick == true && TimePickTempData[Name].Pick != null) {
//指定選取小時
$(Event).parent().find('.TimePickSelect .TimePickTimeBox_SelectOption_Hours')[0].value = Setting.SetDate.getHours();
//指定選取分鐘
$(Event).parent().find('.TimePickSelect .TimePickTimeBox_SelectOption_Minutes')[0].value = Setting.SetDate.getMinutes();
//判斷是否需要指定選取秒數
if (TimePickTempData[Name].SecondsPike == true) {
//指定選取秒
$(Event).parent().find('.TimePickSelect .TimePickTimeBox_SelectOption_Seconds')[0].value = Setting.SetDate.getSeconds();
}
}
}
//====================================== 其他 ======================================
//改變按鈕文字 依照使用者設定的 Format 賦予
if (TimePickTempData[Name].TextView == true) {
if (TimePickTempData[Name].Pick == null) {
//如果取值為空值 就顯示預設文字
$(Event).parent().find('.TimePickText').html(TimePickTempData[Name].ButtonText + ' ');
} else if (TimePickTempData[Name].ROC == true) {
//先取西元年文字
var TempROC = TimePickTempData[Name].Pick.Object.TimePickFormat(TimePickTempData[Name].Format);
//西元年 直接取代成 民國年
TempROC = TempROC.replace(new Date(TimePickTempData[Name].Pick.Object).getFullYear(), (new Date(TimePickTempData[Name].Pick.Object).getFullYear() - 1911));
//套用民國年
$(Event).parent().find('.TimePickText').html(TempROC + ' ');
} else {
//套用西元年
$(Event).parent().find('.TimePickText').html(TimePickTempData[Name].Pick.Object.TimePickFormat(TimePickTempData[Name].Format) + ' ');
}
}
//console.dir($(Event).parent().find('.TimePickText'))
//console.dir(TimePickTempData[Name].Pick)
return;
};
//選取 按鈕
TimePickPickBtn = function (Event, Name) {
//console.dir($(Event).parent().parent().parent().parent().parent().parent().parent().find('button')[0])
//console.dir(Name)
//取得 選取 時間
var TempPickDate = $(Event).attr('date-value');
//取得 時間 數值
var TempHours = 0;
var TempMinutes = 0;
var TempSeconds = 0;
if (TimePickTempData[Name].TimePick == true) {
TempHours = $(Event).parent().parent().parent().parent().parent().parent().find('.TimePickTimeBox_SelectOption_Hours')[0].value;
TempMinutes = $(Event).parent().parent().parent().parent().parent().parent().find('.TimePickTimeBox_SelectOption_Minutes')[0].value;
if (TimePickTempData[Name].SecondsPike == true) {
TempSeconds = $(Event).parent().parent().parent().parent().parent().parent().find('.TimePickTimeBox_SelectOption_Seconds')[0].value;
}
}
//調整字串長度
if (TempHours.length == 1) {
TempHours = '0' + TempHours;
}
if (TempMinutes.length == 1) {
TempMinutes = '0' + TempMinutes;
}
if (TempSeconds.length == 1) {
TempSeconds = '0' + TempSeconds;
}
//拼出時間字串 (標準化時間字串)
var TempString = TimePickFormatDate(new Date(TempPickDate).TimePickFormat('yyyy-MM-dd') + ' ' + TempHours + ':' + TempMinutes + ':' + TempSeconds);
//設置 取值物件 Pick 變數
TimePickTempData[Name].Pick = {
Time: new Date(TempString).getTime(),
ROCFormat: new Date(TempString).TimePickFormat(TimePickTempData[Name].Format).replace(new Date(TempString).getFullYear(), (new Date(TempString).getFullYear() - 1911)),
Format: new Date(TempString).TimePickFormat(TimePickTempData[Name].Format),
String: TempString.TimePickFormat('yyyy-MM-dd HH:mm:ss'),
ROCString: (new Date(TempPickDate).getFullYear() - 1911) + new Date(TempPickDate).TimePickFormat('-MM-dd') + ' ' + TempHours + ':' + TempMinutes + ':' + TempSeconds,
Object: new Date(TempString)
};
//執行 OnChange 函數
if (TimePickTempData[Name].OnChange != null) {
TimePickTempData[Name].OnChange(TimePickTempData[Name].Pick, Name);
}
//呼叫日曆建構函數
TimePickBuild($(Event).parent().parent().parent().parent().parent().parent().parent().find('button')[0], Name, {
Mode: 'PickBtn',
SetDate: new Date(TempPickDate)
});
//若 點選日期後自動關閉 功能開啟時 則自動關閉選單
if (TimePickTempData[Name].PickAuto == true) {
//判斷在視窗開啟的情況下才可以關閉
if ($('.TimePickSelect').length > 0) {
//清除目前使用的名稱
TimePickTempNowName = null;
//執行 OnClose 函數
if (TimePickTempData[Name].OnClose != null) {
TimePickTempData[Name].OnClose(TimePickTempData[Name].Pick, Name);
}
//關閉選單
$('.TimePickSelect').hide(200, function () {
//清除選擇器容器
$('.TimePickSelect').remove();
});
}
}
};
//恢復預設 按鈕
TimePickRestoreBtn = function (Event, Name) {
//console.dir($(Event).parent().parent().parent().find('button')[0])
//console.dir(Name)
var SetDate = new Date();
//恢復預設
if (TimePickTempData[Name].DefaultDate == null) {
//設置 取值物件 Pick 變數
TimePickTempData[Name].Pick = null;
//重製時間選單
if (TimePickTempData[Name].TimePick == true) {
$(Event).parent().parent().find('.TimePickTimeBox_SelectOption_Hours')[0].value = 0;
$(Event).parent().parent().find('.TimePickTimeBox_SelectOption_Minutes')[0].value = 0;
if (TimePickTempData[Name].SecondsPike == true) {
$(Event).parent().parent().find('.TimePickTimeBox_SelectOption_Seconds')[0].value = 0;
}
}
} else {
//設置 取值物件 Pick 變數
TimePickTempData[Name].Pick = {
Time: new Date(TimePickTempData[Name].DefaultDate).getTime(),
ROCFormat: new Date(TimePickTempData[Name].DefaultDate).TimePickFormat(TimePickTempData[Name].Format).replace(new Date(TimePickTempData[Name].DefaultDate).getFullYear(), (new Date(TimePickTempData[Name].DefaultDate).getFullYear() - 1911)),
Format: new Date(TimePickTempData[Name].DefaultDate).TimePickFormat(TimePickTempData[Name].Format),
String: new Date(TimePickTempData[Name].DefaultDate).TimePickFormat('yyyy-MM-dd HH:mm:ss'),
ROCString: (new Date(TimePickTempData[Name].DefaultDate).getFullYear() - 1911) + new Date(TimePickTempData[Name].DefaultDate).TimePickFormat('-MM-dd HH:mm:ss'),
Object: new Date(TimePickTempData[Name].DefaultDate)
};
SetDate = TimePickTempData[Name].Pick.Object;
}
//執行 OnChange 函數
if (TimePickTempData[Name].OnChange != null) {
TimePickTempData[Name].OnChange(TimePickTempData[Name].Pick, Name);
}
//呼叫日曆建構函數
TimePickBuild($(Event).parent().parent().parent().find('button')[0], Name, {
Mode: 'RestoreBtn',
SetDate: SetDate
});
};
//取消 按鈕
TimePickCloseBtn = function (Event, Name) {
//console.dir($(Event).parent().parent().parent().find('button .TimePickText'))
//console.dir(TimePickTempData[Name].CloseText)
//清除目前使用的名稱
TimePickTempNowName = null;
if (TimePickTempData[Name].TextView == true) {
//恢復紀錄的顯示文字
$(Event).parent().parent().parent().find('button .TimePickText').html(TimePickTempData[Name].CloseText);
}
//物件還原
TimePickTempData[Name].Pick = TimePickTempData[Name].ClosePick;
//關閉選單
$('.TimePickSelect').hide(200, function () {
//清除選擇器容器
//$(Event).parent().parent().remove();
$('.TimePickSelect').remove();
});
};
//箭頭呼叫 按鈕
TimePickArrowBtn = function (Event, Name, Mode) {
//console.dir($(Event).parent().parent().parent().parent().find('button')[0])
//console.dir($(Event).parent().parent().parent())
//console.dir(Name)
//取得 當前年份月份位置
var TempYear = $(Event).parent().parent().parent().find('.TimePickTitle_SelectOption_Year')[0].value;
var TempMonth = parseInt($(Event).parent().parent().parent().find('.TimePickTitle_SelectOption_Month')[0].value) + 1;
var TempObject = new Date(TempYear + '-' + TempMonth + '-01');
//判斷如果是IE或safari就要標準化 (套用標準化時間字串)
if (TimePickBrowser.chrome || TimePickBrowser.firefox) {
var TempObject = new Date(TempYear + '-' + TempMonth + '-01');
} else {
var TempObject = new Date(TimePickFormatDate(TempYear + '-' + TempMonth + '-01'));
}
//左箭頭
if (Mode == 'Prev') {
TempObject.setMonth(TempObject.getMonth() - 1);
}
//右箭頭
if (Mode == 'Next') {
TempObject.setMonth(TempObject.getMonth() + 1);
}
//console.dir(TempObject.getFullYear())
//呼叫日曆建構函數
TimePickBuild($(Event).parent().parent().parent().parent().find('button')[0], Name, {
Mode: 'ArrowBtn',
SetDate: TempObject
});
};
//確定 按鈕
TimePickSelectBtn = function (Event, Name) {
//清除目前使用的名稱
TimePickTempNowName = null;
//執行 OnClose 函數
if (TimePickTempData[Name].OnClose != null) {
TimePickTempData[Name].OnClose(TimePickTempData[Name].Pick, Name);
}
//關閉選單
$('.TimePickSelect').hide(200, function () {
//清除選擇器容器
//$(Event).parent().parent().remove();
$('.TimePickSelect').remove();
});
};
//下拉選單 OnChange 事件
TimePickSelectOptionOnChange = function (Event, Name, Mode) {
//YearMonth
//console.dir($(Event).parent().parent().parent().parent())
//TimePick
//console.dir($(Event).parent().parent())
//套用物件
var TempEvemt = null;
var TempString = '';
if (Mode == 'YearMonth') {
TempEvemt = $(Event).parent().parent().parent().parent();
} else if (Mode == 'TimePick') {
TempEvemt = $(Event).parent().parent();
}
//取得 時間 數值
var TempYear = 0;
var TempMonth = 0;
var TempHours = 0;
var TempMinutes = 0;
var TempSeconds = 0;
TempYear = $(TempEvemt).find('.TimePickTitle_SelectOption_Year')[0].value;
TempMonth = '' + (parseInt($(TempEvemt).find('.TimePickTitle_SelectOption_Month')[0].value) + 1);
if (TimePickTempData[Name].TimePick == true) {
TempHours = $(TempEvemt).find('.TimePickTimeBox_SelectOption_Hours')[0].value;
TempMinutes = $(TempEvemt).find('.TimePickTimeBox_SelectOption_Minutes')[0].value;
if (TimePickTempData[Name].SecondsPike == true) {
TempSeconds = $(TempEvemt).find('.TimePickTimeBox_SelectOption_Seconds')[0].value;
}
}
//調整字串長度
if (TempHours.length == 1) {
TempHours = '0' + TempHours;
}
if (TempMinutes.length == 1) {
TempMinutes = '0' + TempMinutes;
}
if (TempSeconds.length == 1) {
TempSeconds = '0' + TempSeconds;
}
//帶入選取值
var TempPickDate = new Date();
if (TimePickTempData[Name].Pick != null) {
TempPickDate = TimePickTempData[Name].Pick.Object;
}
//判斷是年月 還是時間 的下拉選單
if (Mode == 'YearMonth') {
//拼出時間字串 (套用標準化時間字串)
TempString = TimePickFormatDate(TempYear + '-' + TempMonth);
} else if (Mode == 'TimePick') {
//拼出時間字串 (套用標準化時間字串)
TempString = TimePickFormatDate(new Date(TempPickDate).TimePickFormat('yyyy-MM-dd') + ' ' + TempHours + ':' + TempMinutes + ':' + TempSeconds);
//設置 取值物件 Pick 變數
TimePickTempData[Name].Pick = {
Time: new Date(TempString).getTime(),
ROCFormat: new Date(TempString).TimePickFormat(TimePickTempData[Name].Format).replace(new Date(TempString).getFullYear(), (new Date(TempString).getFullYear() - 1911)),
Format: new Date(TempString).TimePickFormat(TimePickTempData[Name].Format),
String: TempString.TimePickFormat('yyyy-MM-dd HH:mm:ss'),
ROCString: (parseInt(TempYear) - 1911) + new Date(TempPickDate).TimePickFormat('-MM-dd') + ' ' + TempHours + ':' + TempMinutes + ':' + TempSeconds,//(new Date(TempPickDate).getFullYear() - 1911) + new Date(TempPickDate).TimePickFormat('-MM-dd') + ' ' + TempHours + ':' + TempMinutes + ':' + TempSeconds,
Object: new Date(TempString)
};
//執行 OnChange 函數
if (TimePickTempData[Name].OnChange != null) {
TimePickTempData[Name].OnChange(TimePickTempData[Name].Pick, Name);
}
}
//呼叫日曆建構函數
TimePickBuild($(TempEvemt).parent().find('button')[0], Name, {
Mode: Mode,
SetDate: new Date(TempString)
});
};
//滑鼠滾輪觸發 每小時 下拉選單 OnChange 事件 (此處使用 document 會跟其他第三方套件衝突 所以只好改監視 html)
if (!navigator.userAgent.toLowerCase().match(/(android|iphone|ipad|ipod);?/i)) {
$('html').on('mousewheel', '.TimePickTitle_SelectOption_Year,.TimePickTitle_SelectOption_Month,.TimePickTimeBox_SelectOption_Hours,.TimePickTimeBox_SelectOption_Minutes,.TimePickTimeBox_SelectOption_Seconds', function (e) {
//取得目前選取的位置
var selectedIndex = $(this)[0].selectedIndex;
var optionCount = $(this)[0].childNodes.length - 1;
//計算滾動
if (e.deltaY == 1) {
if (selectedIndex > 0) {
selectedIndex--;
} else {
return false;
}
} else if (e.deltaY == -1) {
if (selectedIndex < optionCount) {
selectedIndex++;
} else {
return false;
}
}
//賦予值
$(this).val($(this)[0][selectedIndex].value);
//刷新數值
TimePickSelectOptionOnChange($(this), $(this).attr('select-boxname'), $(this).attr('select-type'));
return false;
});
};
//取得時間選擇器選取數值
TimePickGet = function (Name) {
return TimePickTempData[Name].Pick;
};
//修改選填項目參數
TimePickSettingChange = function (Name, Setting) {
//先複製出目前的參數
var tempSetting = TimePickTempData[Name];
//重新套用
for (var i in Setting) {
//排除 ID 項目
if (i != 'ID') {
//直接套用
tempSetting[i] = Setting[i];
}
}
//執行建立
TimePickSetting(tempSetting);
};
//計算當月起始日與結束日 (回傳計算結果物件) (套用標準化時間字串)
TimePickGetMonthPeriod = function (Year, Month) {
//取得日期
//var TempDate = new Date(Year + '-' + Month + '-01');
var TempDate = TimePickFormatDate(Year + '-' + Month + '-01');
//定日期為第一天
var UTC_StartDate = TempDate.setDate(1);
var StartDate = TempDate.getFullYear() + '-' + (TempDate.getMonth() + 1) + '-' + TempDate.getDate();
//將月份移至下個月份
TempDate.setMonth(TempDate.getMonth() + 1);
//設定為下個月份的第一天
TempDate.setDate(1);
//將日期-1為當月的最後一天
var UTC_EndDate = TempDate.setDate(TempDate.getDate() - 1);
var EndDate = TempDate.getFullYear() + '-' + (TempDate.getMonth() + 1) + '-' + TempDate.getDate();
//判斷如果是IE或safari就要標準化
if (TimePickBrowser.chrome || TimePickBrowser.firefox) {
} else {
StartDate = TimePickFormatDate(StartDate);
EndDate = TimePickFormatDate(EndDate);
}
return { StartDate: StartDate, EndDate: EndDate };
};
//標準化時間字串 (為了相容IE)
TimePickFormatDate = function (DateVal) {
//判斷是字串還是物件
if (typeof (DateVal) == 'string') {
var TempDate = new Date(DateVal);
var TempLeft;
var TempRight;
//切割日期跟時間
if (DateVal.match(/(.*?) /) != null) {
TempLeft = DateVal.match(/(.*?) /)[1];
TempRight = DateVal.replace(DateVal.match(/(.*?) /)[0], '');
} else {
TempLeft = DateVal;
}
//分析陣列
if (DateVal.match(/(.*?) /) != null) {
//分析 日期
TempLeft = TempLeft.split('-');
//分析 時間
TempRight = TempRight.split(':');
} else {
//分析 日期
TempLeft = TempLeft.split('-');
TempRight = [];
}
//導入年份 (若有資料就帶入,無資料帶預設)
if (TempLeft[0] != undefined) {
TempDate.setFullYear(TempLeft[0]);
} else {
TempDate.setFullYear(1970);
}
//導入月份
if (TempLeft[1] != undefined) {
TempDate.setMonth(parseInt(TempLeft[1]) - 1);
} else {
TempDate.setMonth(0);
}
//導入日期
if (TempLeft[2] != undefined) {
TempDate.setDate(TempLeft[2]);
} else {
TempDate.setDate(1);
}
//導入時間
if (TempRight[0] != undefined) {
TempDate.setHours(TempRight[0]);
} else {
TempDate.setHours(0);
}
//導入分鐘
if (TempRight[1] != undefined) {
TempDate.setMinutes(TempRight[1]);
} else {
TempDate.setMinutes(0);
}
//導入秒
if (TempRight[2] != undefined) {
TempDate.setSeconds(TempRight[2]);
} else {
TempDate.setSeconds(0);
}
//回傳
return TempDate;
} else if (typeof (DateVal) == 'object') {
//物件本身適用 直接離開
return DateVal;
}
};
//調整日曆外觀大小
TimePickSelectResize = function () {
var WindowWidth = window.innerWidth;
var WindowHeight = window.innerHeight;
//計算置中
if (WindowHeight <= 420) {
$('.TimePickSelect').css({
top: '10px',
zoom: 0.9
});
}
if (WindowWidth >= 768) {
$('.TimePickSelect').css({
top: '20px',
zoom: 1.5
});
}
if (WindowWidth >= 1024) {
$('.TimePickSelect').css({
top: '20px',
zoom: 1.75
});
}
};
//每次改變視窗大小時 調整日曆外觀大小
$(window).resize(function () {
if (navigator.userAgent.match(/(android|iphone|ipad|ipod);?/i)) {
TimePickSelectResize();
}
});
//點擊空白處隱藏選單 (防止點擊選項時關閉選單 改至 呼叫日曆 最後執行)
$(document).click(function () {
//判斷在視窗開啟的情況下才可以關閉
if ($('.TimePickSelect').length > 0) {
////清除目前使用的名稱
//TimePickTempNowName = null;
//if (TimePickTempData[TimePickTempCloseName].TextView == true) {
// //恢復紀錄的顯示文字
// $(TimePickTempCloseEvent).find('.TimePickText').html(TimePickTempData[TimePickTempCloseName].CloseText);
//}
////物件還原
//TimePickTempData[TimePickTempCloseName].Pick = TimePickTempData[TimePickTempCloseName].ClosePick;
////關閉選單
//$('.TimePickSelect').hide(200, function () {
// //清除選擇器容器
// $('.TimePickSelect').remove();
//});
//清除目前使用的名稱
TimePickTempNowName = null;
//執行 OnClose 函數
if (TimePickTempData[TimePickTempCloseName].OnClose != null) {
TimePickTempData[TimePickTempCloseName].OnClose(TimePickTempData[TimePickTempCloseName].Pick, TimePickTempCloseName);
}
//關閉選單
$('.TimePickSelect').hide(200, function () {
//清除選擇器容器
$('.TimePickSelect').remove();
});
}
});
//ESC 關閉選單
$(document).on('keyup', 'body', function (key_event) {
//判斷在視窗開啟的情況下才可以關閉
if ($('.TimePickSelect').length > 0) {
if (key_event.keyCode == 27) {
//清除目前使用的名稱
TimePickTempNowName = null;
if (TimePickTempData[TimePickTempCloseName].TextView == true) {
//恢復紀錄的顯示文字
$(TimePickTempCloseEvent).find('.TimePickText').html(TimePickTempData[TimePickTempCloseName].CloseText);
}
//物件還原
TimePickTempData[TimePickTempCloseName].Pick = TimePickTempData[TimePickTempCloseName].ClosePick;
//關閉選單
$('.TimePickSelect').hide(200, function () {
//清除選擇器容器
$('.TimePickSelect').remove();
});
}
}
});
//時間資料 轉換工具
TimePickDateConvertHelper = function (inDate, Format) {
//標準化時間字串 (為了相容IE跟Edge)
inDate = TimePickFormatDate(inDate);
// 'yyyy年MM月dd日 HH時mm分ss秒'
Format = Format == undefined ? 'yyyy-MM-dd HH:mm:ss' : Format;
//設置 取值物件 Pick 變數
var Pick = {
Time: new Date(inDate).getTime(),
Format: new Date(inDate).TimePickFormat(Format),
ROCFormat: new Date(inDate).TimePickFormat(Format).replace(new Date(inDate).getFullYear(), (new Date(inDate).getFullYear() - 1911)),
String: new Date(inDate).TimePickFormat('yyyy-MM-dd HH:mm:ss'),
ROCString: (new Date(inDate).getFullYear() - 1911) + new Date(inDate).TimePickFormat('-MM-dd HH:mm:ss'),
Object: new Date(inDate)
};
return Pick;
};
// jQuery 風格使用函數
$.fn.extend({
//定義時間選擇器
TimeSetting: function (Setting) {
if ($(this).length > 0) {
if ($(this)[0].id != '') {
//有 id
Setting['ID'] = $(this)[0].id;
TimePickSetting(Setting);
} else {
//無 id
console.info('缺乏物件[ID]參數設定!');
}
}
},
//取得時間選擇器選取數值
TimeGet: function () {
return TimePickGet($(this)[0].id);
},
//修改{選填項目}參數
TimeSettingChange: function (Setting) {
TimePickSettingChange($(this)[0].id, Setting);
},
});
//取得目前時間 並格式化
//var Today = new Date();
//console.dir('現在時間:' + Today.TimePickFormat('yyyy-MM-dd HH:mm:ss'));
//console.dir('現在時間:' + Today.getFullYear() + '年' + (Today.getMonth() + 1) + '月' + Today.getDate() + '日' + Today.getHours() + '點' + Today.getMinutes() + '分' + Today.getSeconds() + '.' + Today.getMilliseconds() + '秒');
//取得今日星期 (從 0 開始算起)
//var WeekdaysArray = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
//console.dir('今日為:' + WeekdaysArray[Today.getDay()]);
//取得月份 (從 0 開始算起)
//var MonthsArray = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
//console.dir('這個月為:' + MonthsArray[Today.getMonth()]);
//var MonthPeriod = GetMonthPeriod(Today.getFullYear(), (Today.getMonth() + 1));
//console.dir('本月起始日:' + MonthPeriod.StartDate);
//console.dir('本月結束日:' + MonthPeriod.EndDate);