/* * 檢查是否為日期(民國年西元年格式皆可) * 2009以後皆使用此function */ function isDate(str){ var dStr = trim(str); if( isNum(dStr) && dStr.length == 8 ){ year = parseFloat(dStr.substring(0, 4)); month = parseFloat(dStr.substring(4, 6)); day = parseFloat(dStr.substring(6, 8)); if( year < 1 || month < 1 || month > 12 || day < 1 ){ return false; } if( ( month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ) && day > 31 ){ return false; } if( ( month == 2 || month == 4 || month == 6 || month == 9 || month == 11 ) && day > 30 ){ return false; } if( month == 2 ){ if( ( ( year % 4 ) == 0 ) && ( day > 29 ) ){ return false; } else if( ( year % 4 != 0 ) && ( day > 28 ) ){ return false; } } return true; } //add by DavidYun 2009-01-16 增加檢查民國年(0980116) else if(isNum(dStr) && dStr.length == 7){ year = parseFloat(dStr.substring(0,3)); year = year + 1911; month = parseFloat(dStr.substring(3, 5)); day = parseFloat(dStr.substring(5, 7)); if( year < 1 || month < 1 || month > 12 || day < 1 ){ return false; } if( ( month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12 ) && day > 31 ){ return false; } if( ( month == 2 || month == 4 || month == 6 || month == 9 || month == 11 ) && day > 30 ){ return false; } if( month == 2 ){ if( ( ( year % 4 ) == 0 ) && ( day > 29 ) ){ return false; } else if( ( year % 4 != 0 ) && ( day > 28 ) ){ return false; } } return true; } else return false; } /* * Wells提供檢查是否為數字的function 2009-01-13 * 是否為整數, 有傳入len,表示數字長度, eqFlag=y, 表示長度需等於len,其它則為<=len */ function isNum(str, len, eqFlag) { var re = /^\d*$/; if(len != null && re.test(len)) { if(eqFlag != null && eqFlag == "y") return (str.length == len && re.test(str)); else return (str.length <= len && re.test(str)); } else return re.test(str); } /* * 是否為英,數字,空白,str:待測字串(len:文字長度限制,eqFlag:y,表示長度需等於len,其它則為<=len) * str為必傳欄位,括號內為非必傳參數 * 2009以後檢查英數字皆用此chkStr */ function chkStr(str, len, eqFlag) { var re = /^[a-zA-Z0-9 ]*$/; if(len != null && isNum(len)) { if(eqFlag != null && eqFlag == "y") return (str.length == len && re.test(str)); else return (str.length <= len && re.test(str)); } else return re.test(str); } /* * 轉換日期為西元年 add by DavidYun 2009-01-16 * 2009以後皆使用此function */ function transDateToAD(date){ var year; var rest; if(date.length == 7){ year = parseFloat(date.substring(0,3)) + 1911; rest = date.substring(3,7); } else if(date.length == 8){ year = date.substring(0,4); rest = date.substring(4,8); } else{ alert("合法日期格式為yyyymmdd or yyymmdd!"); } return year + "" + rest; } /* * Modify from checkDateGap * Mark by DavidYun 2008-04-04 * 2009以後皆使用此function * 檢查日期區間是否大於validGap(=7)西元年與民國年皆適用 * @param date1 欲比較之日期1 * @param date2 欲比較之日期2 */ function checkDateGapBothFormat(date1, date2) { MINI_SECORD_TO_DAY = 60 * 60 * 24 * 1000; var validGap = 7; if(date1.length == 7 && date2.length == 7){ yy1 = date1.substring(0,3); mm1 = date1.substring(3,5); dd1 = date1.substring(5,7); yy2 = date2.substring(0,3); mm2 = date2.substring(3,5); dd2 = date2.substring(5,7); newdate1 = new Date(eval(yy1)+1911,eval(mm1-1),eval(dd1)); newdate2 = new Date(eval(yy2)+1911,eval(mm2-1),eval(dd2)); } else if(date1.length == 8 && date2.length == 8){ yy1 = date1.substring(0,4); mm1 = date1.substring(4,6); dd1 = date1.substring(6,8); yy2 = date2.substring(0,4); mm2 = date2.substring(4,6); dd2 = date2.substring(6,8); newdate1 = new Date(eval(yy1),eval(mm1-1),eval(dd1)); newdate2 = new Date(eval(yy2),eval(mm2-1),eval(dd2)); } else{ alert("起迄日期格式必須相同!"); return false; } range_days = (newdate2-newdate1)/MINI_SECORD_TO_DAY; //alert(range_days); if( range_days < 0 ){ alert("迄日小於起日!!"); return false; }else if ( range_days > validGap ){ alert("起迄日期區間不可大於"+validGap+"天"); return false; }else{ return true; } } /* * Mark by DavidYun 2008-04-04 * @param dateStr 為西元年之日期格式 * dateStr.substring(0,4) year * dateStr.substring(4,6) month * dateStr.substring(6,8) day */ //======日期判斷================================================= function fnValidDate(dateStr) { var leap = 28; if (leapYear(parseInt(dateStr.substring(0,4))) == 1) leap = 29; var tmp = parseInt(dateStr.substring(4,6)) if (dateStr.substring(4,6) == '08') tmp = 8; if (dateStr.substring(4,6) == '09') tmp = 9 if (tmp < 1 || tmp > 12) { return (false) } var monthTable = new Array(12); monthTable[1] = 31; monthTable[2] = leap; monthTable[3] = 31; monthTable[4] = 30; monthTable[5] = 31; monthTable[6] = 30; monthTable[7] = 31; monthTable[8] = 31; monthTable[9] = 30; monthTable[10] = 31; monthTable[11] = 30; monthTable[12] = 31; var dtmp = parseInt(dateStr.substring(6)) if(dateStr.substring(6) == '08') dtmp = 8; if(dateStr.substring(6) == '09') dtmp = 9 if(dtmp < 1 || dtmp > monthTable[tmp]) { return (false) } return (true) } //======閏年判斷================================================================== function leapYear (Year) { if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) return (1); else return (0); } //=======刪除千分號================================================================= function changeVal(T1) { pos=0 var oring=T1.value; pos=oring.indexOf(","); while (pos !=-1) { oring=(oring).replace(",",""); pos=oring.indexOf(","); } return oring; } //=======加上千分號========================================================= function changeStr(T1) { c=""; var oring = T1.value var t1v1 = T1.value var t1v2 = ""; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (isNaN(Math.abs(T1.value))) { alert("請輸入數字"); return oring; }else{ if (eval(T1.value) < 0 ) c="-"; } if(T1.value.length == 0) return oring; if(Math.abs(T1.value) == 0) return oring; T1.value= Math.abs(T1.value); t1v1 = T1.value if((pos=t1v1.indexOf(".")) != -1) { t1v2 = t1v1.substring(pos,((T1.value).length)); t1v1 = t1v1.substring(0,pos); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pos=oring.indexOf(",") if (pos==-1) { var len = t1v1.length; a=Math.floor(len % 3) b=Math.floor(len / 3 -1) if(a !=0 && b >= 0) oring = t1v1.substring(0,a) + ","; else if(b<0) oring = t1v1 else oring = ""; for(i=0;i 4) startdate = (Math.abs(startdate.substring(0,startdate.length-4))+1911)+startdate.substring(startdate.length-4,startdate.length); else if(startdate.length >=8) startdate = (Math.abs(startdate.substring(0,startdate.length-4)))+startdate.substring(startdate.length-4,startdate.length); else alert(message + "日期有誤"); if(!fnValidDate(startdate)) { alert(message + "日期有誤"); return false; } return startdate; } //======檢查小數點位數是否正確=================================================================== function isRightDecimal(checkValue,checklength,szWarning) { if(checkValue.indexOf(".") != -1 ) { var len = checkValue.substring(checkValue.indexOf(".")+1,checkValue.length); if(len.length > checklength) { if(checklength != 0) alert( szWarning + "的小數點後只能有 " + checklength + " 個位數"); else alert( szWarning + "不能有小數位數"); return false; } } return true; } //======月份相加======================================================= function AddMonth(baseDate,amount) { if(isNaN(amount=parseInt(amount))) return false; if(baseDate.length<5) return false; var toWestYear = 0; var monthTable = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var year = Math.abs(baseDate.substring(0,baseDate.length-4)); if(year.length<4) toWestYear = 1911; var month = Math.abs(baseDate.substring(baseDate.length-4,baseDate.length-2)); var day = Math.abs(baseDate.substring(baseDate.length-2,baseDate.length)); var addyear = (month+amount)/12; addyear = (addyear >=0)?Math.floor(addyear):Math.ceil(addyear); var newmonth = (month+amount)%12; if(newmonth<=0) { newmonth = 12+newmonth; addyear --; } year += addyear; monthTable[1] = (leapYear(addyear+toWestYear) == 1)?29:28; if(day>monthTable[newmonth-1]) day = monthTable[newmonth-1]; return (year*10000) + (newmonth*100) + day; } //=======檢查日期起迄是否相差七日================================ function checkDateGap(date1, date2) { MINI_SECORD_TO_DAY = 60 * 60 * 24 * 1000; yy1 = date1.substring(0,3); mm1 = date1.substring(3,5); dd1 = date1.substring(5,7); yy2 = date2.substring(0,3); mm2 = date2.substring(3,5); dd2 = date2.substring(5,7); newdate1 = new Date(eval(yy1)+1911,eval(mm1-1),eval(dd1)); newdate2 = new Date(eval(yy2)+1911,eval(mm2-1),eval(dd2)); range_days = (newdate2-newdate1)/MINI_SECORD_TO_DAY; if( range_days > 7 ) return false; else return true; } /* 顯示alert訊息 * obj 欄位物件 * msg 顯示訊息 */ function showError(obj,msg) { if (obj.type != null && obj.type != 'hidden') { alert(msg); obj.focus(); } return true; } /* 檢查欄位是否為空白; 是:發出alert訊息, 否:false * fieldId 欄位ID * fieldName 欄位名稱 */ function isEmpty(fieldId,fieldName){ var fieldobject = document.getElementById(fieldId); var val = fieldobject.value; if (val.length == ""){ return showError(fieldobject,fieldName+"不可為空白!"); } return false; } function trim(str) { return str.replace(/^\s+|\s+$/g, ""); } //=====檢查時=========================================================== /* * 檢查時 * Mark by Rich 2010-10-25 * @param hour */ function isHourCorrect(hour){ if(hour!=""){ if(isNaN(hour) || hour > 23|| hour < 0){ return false; } if (hour.length != 2){ return false; } } return true; } //=====檢查分=========================================================== /* * 檢查分 * Mark by Rich 2010-10-25 * @param min */ function isMinCorrect(min){ if(min!=""){ if(isNaN(min)|| min > 59|| min < 0){ return false; } if (min.length != 2){ return false; } } return true; } //=====將欄位設為目前系統時間=========================================================== /* * 將欄位設為目前西元系統時間(YYYYMMDDH24MISS) * Mark by Rich 2010-10-25 * @param elementId */ function setSysDateTime(elementId,len1,len2){ var today = new Date(); var year = today.getFullYear(); var month = today.getMonth()+1; if (month < 10){ month = "0"+month; } var day = today.getDate(); if (day < 10){ day = "0"+day; } var hour = today.getHours(); if (hour < 10){ hour = "0"+hour; } var minute = today.getMinutes(); if (minute < 10){ minute = "0"+minute; } var second = today.getSeconds(); if (second < 10){ second = "0"+second; } var formatedDate = year+""+month+""+day+""+hour+""+minute+""+second; document.getElementById(elementId).value = formatedDate.substring(len1,len2); } /* * 將欄位設為目前民國系統時間(YYYMMDDH24MISS) * Mark by Rich 2010-10-25 * @param elementId */ function setSysDateTime2(elementId,len1,len2){ var today = new Date(); var year = today.getFullYear()-1911; var month = today.getMonth()+1; if (year < 100){ year = "0"+year; } if (month < 10){ month = "0"+month; } var day = today.getDate(); if (day < 10){ day = "0"+day; } var hour = today.getHours(); if (hour < 10){ hour = "0"+hour; } var minute = today.getMinutes(); if (minute < 10){ minute = "0"+minute; } var second = today.getSeconds(); if (second < 10){ second = "0"+second; } var formatedDate = year+""+month+""+day+""+hour+""+minute+""+second; document.getElementById(elementId).value = formatedDate.substring(len1,len2); } /* * 將欄位設為目前民國系統時間(YYYMMDDH24MISS) * Add by Rich 20130618 * @param elementId */ function getCDT(len1,len2){ var today = new Date(); var year = today.getFullYear()-1911; var month = today.getMonth()+1; if (year < 100){ year = "0"+year; } if (month < 10){ month = "0"+month; } var day = today.getDate(); if (day < 10){ day = "0"+day; } var hour = today.getHours(); if (hour < 10){ hour = "0"+hour; } var minute = today.getMinutes(); if (minute < 10){ minute = "0"+minute; } var second = today.getSeconds(); if (second < 10){ second = "0"+second; } var formatedDate = year+""+month+""+day+""+hour+""+minute+""+second; return formatedDate.substring(len1,len2); } //=====檢查日期時間=========================================================== /* * Mark by Rich 2010-10-25 * @param startdate 欲檢查之日期時間 * @param message 欲檢查之欄位名稱,用於顯示錯誤訊息 * 1.檢查是否包含文字 * 2.將日期統一為西元年後檢查是否符合日期規則(function fnValidDate) */ function checkDateTime(startdate,message) { if(startdate.length != 12) { alert(message + "不可空白"); return false; } if(isNaN(Math.abs(startdate))) { alert(message + "不可為文字"); return false; } if(startdate.length < 8 && startdate.length > 4) startdate = (Math.abs(startdate.substring(0,startdate.length-4))+1911)+startdate.substring(startdate.length-4,startdate.length); else if(startdate.length >=8) startdate = (Math.abs(startdate.substring(0,startdate.length-4)))+startdate.substring(startdate.length-4,startdate.length); else alert(message + "日期有誤"); if(!fnValidDate(startdate.substring(0,8))) { alert(message + "日期有誤"); return false; } if(!isHourCorrect(startdate.substring(8,10))) { alert(message + "時間有誤"); return false; } if(!isMinCorrect(startdate.substring(10,12))) { alert(message + "時間有誤"); return false; } return true; } //=====檢查日期時間=========================================================== /* * Mark by Rich 2010-10-25 * @param str 欲檢查之字串 * @param message 欲檢查之欄位名稱,用於顯示錯誤訊息 */ function isDeclTypeCorrect(str,message){ if(!(str.substring(0,1) >= 1 && str.substring(0,1) <= 4)) { alert(message + "有誤"); return false; } return true; } //=====小寫轉大寫=========================================================== /* * Mark by Rich 2010-10-25 * @param form */ function upperCaseText(form){ for (var i=0;i 6) fTime = time.substring(0,2) + ":" + time.substring(2,4) + ":" + time.substring(4,time.length); return fTime; } //=====時間轉換格式=========================================================== /* * Mark by Rich 2010-10-25 * @param 時間欄位 */ function formateDateTime(str){ var d = formatWDate(str.substring(0,8)); var t = formatTime(str.substring(8,12)); if (d == "" || t == "") return ""; var dt = d+"-"+t; return dt; } //=====分轉小時=========================================================== /* * Mark by Rich 2010-10-25 * @param 時間欄位 */ function formateMin(str){ var a = Math.floor(parseInt(str)/60); var b = parseInt(str)%60; var ab = a+"小時"+b+"分"; return ab; } //=====清除Form值=========================================================== /* * Mark by Rich 2010-10-25 * @param form */ function clearForm(form){ for (var i=0;i