You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2682 lines
101 KiB
2682 lines
101 KiB
|
|
function ___iframeload() {
|
|
try {
|
|
if (!iframe.readyState || iframe.readyState == "complete") {
|
|
ShowArtAlert("Local iframe is now loaded.");
|
|
}
|
|
} catch (e) {
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
function checkDel() {
|
|
//ShowArtAlert(111);
|
|
if (confirm("確定刪除該筆資料") == true) {
|
|
ShowArtAlert("刪除成功");
|
|
}
|
|
}
|
|
|
|
|
|
$(document).ready(function () {
|
|
try {
|
|
BackTop();
|
|
} catch (e) {
|
|
|
|
}
|
|
})
|
|
|
|
/********************************************
|
|
* 函數名稱:fnGetActullyIn(element)
|
|
* 目的:金額控件不能輸入小數點
|
|
* 作者:Alina
|
|
* 時間:2013/02/26
|
|
* 參數說明:
|
|
*********************************************/
|
|
function fnGetActullyIn(element) {
|
|
var strActullyIncome = element.value;
|
|
var strActullyIn = "";
|
|
var len = 0;
|
|
if (strActullyIncome.indexOf(".") != -1) {
|
|
for (var i = 0; i <= strActullyIncome.length - 1; i++) {
|
|
if (strActullyIncome.charAt(i) != ".") {
|
|
strActullyIn += strActullyIncome.charAt(i);
|
|
}
|
|
else {
|
|
len = i;
|
|
}
|
|
}
|
|
element.value = strActullyIn;
|
|
if (document.selection) {
|
|
var sel = element.createTextRange();
|
|
sel.moveStart('character', len);
|
|
sel.collapse();
|
|
sel.select();
|
|
} else if (typeof element.selectionStart == 'number' && typeof element.selectionEnd == 'number') {
|
|
element.selectionStart = element.selectionEnd = len;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:
|
|
* 目的:移動DIV
|
|
* 作者:Vivian
|
|
* 時間:2012/09/23
|
|
* 參數說明:無
|
|
*********************************************/
|
|
var rDrag = {
|
|
o: null,
|
|
init: function (o) {
|
|
o.onmousedown = this.start;
|
|
},
|
|
start: function (e) {
|
|
var CurryMouseObj = event.srcElement ? event.srcElement : event.target;
|
|
if (CurryMouseObj.tagName.toLowerCase() == "input" || CurryMouseObj.tagName.toLowerCase() == "select" || CurryMouseObj.tagName.toLowerCase() == "textarea") {
|
|
//滑鼠在以上標籤上時不可以移動
|
|
return;
|
|
}
|
|
|
|
var o;
|
|
e = rDrag.fixEvent(e);
|
|
e.preventDefault && e.preventDefault();
|
|
rDrag.o = o = this;
|
|
o.x = e.clientX - rDrag.o.offsetLeft;
|
|
o.y = e.clientY - rDrag.o.offsetTop;
|
|
document.onmousemove = rDrag.move;
|
|
document.onmouseup = rDrag.end;
|
|
},
|
|
move: function (e) {
|
|
var CurryMouseObj = event.srcElement ? event.srcElement : event.target;
|
|
e = rDrag.fixEvent(e);
|
|
var oLeft, oTop;
|
|
oLeft = e.clientX - rDrag.o.x;
|
|
oTop = e.clientY - rDrag.o.y;
|
|
|
|
if (oLeft < 0) {
|
|
oLeft = 0;
|
|
}
|
|
if (oTop < 0) {
|
|
oTop = 0;
|
|
}
|
|
//if (oLeft > ($(window).width() - $(CurryMouseObj).width())) {
|
|
// oLeft = $(window).width() - $(CurryMouseObj).width();
|
|
//}
|
|
//if (oTop > ($(window).height() - $(CurryMouseObj).height())) {
|
|
// oTop = ($(window).height() - $(CurryMouseObj).height());
|
|
//}
|
|
|
|
rDrag.o.style.left = oLeft + 'px';
|
|
rDrag.o.style.top = oTop + 'px';
|
|
},
|
|
end: function (e) {
|
|
e = rDrag.fixEvent(e);
|
|
rDrag.o = document.onmousemove = document.onmouseup = null;
|
|
//ShowArtAlert(document.getElementById("Operation"));
|
|
//document.getElementById("Operation").scrolling = "auto"; //顯示滚动条
|
|
},
|
|
fixEvent: function (e) {
|
|
if (!e) {
|
|
e = window.event;
|
|
e.target = e.srcElement;
|
|
e.layerX = e.offsetX;
|
|
e.layerY = e.offsetY;
|
|
}
|
|
return e;
|
|
}
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnDisabledThisCtl(fields)
|
|
* 目的:禁用指定ID的控件
|
|
* 作者:Ethan
|
|
* 時間:2012/12/18
|
|
* 參數說明:fields:所有控件ID字符串
|
|
* 範例:fnDisabledThisCtl('id1,id2,id3,…idn');
|
|
*********************************************/
|
|
function fnDisabledThisCtl(fields) {
|
|
if (fields != null) {
|
|
var fieldsArray = fields.split(",");
|
|
if (fieldsArray != null && fieldsArray.length > 0) {
|
|
for (var i = 0; i < fieldsArray.length; i++) {
|
|
$('#' + fieldsArray[i]).attr("disabled", "disabled");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/********************************************
|
|
* 函數名稱:fnUpdInBack()
|
|
* 目的:是否編輯按鈕通過後台
|
|
* 作者:Gary
|
|
* 時間:2014/5/30
|
|
* 參數說明:目前預設為false,直接透過JS效果,return改為true則會通過後台
|
|
*********************************************/
|
|
function fnUpdInBack() {
|
|
return false;
|
|
}
|
|
/********************************************
|
|
* 函數名稱:fnLeaveInBack()
|
|
* 目的:是否編輯按鈕通過後台
|
|
* 作者:Gary
|
|
* 時間:2014/5/30
|
|
* 參數說明:目前預設為false,直接透過JS效果,return改為true則會通過後台
|
|
*********************************************/
|
|
function fnLeaveInBack() {
|
|
return false;
|
|
}
|
|
/********************************************
|
|
* 函數名稱:fnCustomBack()
|
|
* 目的:使用JS離開時,預設前往的畫面是目前畫面的Qry畫面,如果需要自定義,則在個別的Js加上此Function,並把Return改為True,
|
|
然後Function內添加類似parent.OpenPageTab('PhoneSurveyForEmp_Qry');的語法即可。@PhoneSurveyForEmp_Qry 是要前往的頁面名稱
|
|
請參考Bwt專案的PhoneSurvey_Upd.js寫法。
|
|
* 作者:Gary
|
|
* 時間:2014/7/31
|
|
* 參數說明:目前預設為false,直接前往目前畫面的Qry畫面,如改成True,請添加前往頁面的JS語法
|
|
*********************************************/
|
|
function fnCustomBack() {
|
|
return false;
|
|
}
|
|
/********************************************
|
|
* 函數名稱:fnDisabledThisCtl(fields,NoUpd)
|
|
* 目的:禁用頁面所有控件,排除指定ID的控件
|
|
* 作者:Ethan
|
|
* 時間:2012/12/18
|
|
* 編輯人員:Gary
|
|
* 編輯時間:2014/03/25
|
|
* 參數說明:
|
|
fields:非禁用所有控件ID字符串
|
|
NoUpd:如果有值,則代表沒有UPD權限,所有Toolbar隱藏,除fields參數所包含的btnItem //Modify by Gary
|
|
* 範例:fnDisabledThisCtl('id1,id2,id3,…idn');
|
|
*********************************************/
|
|
function fnUnDisabledThisCtl(fields, upd) {
|
|
var Showbtn = fields;
|
|
//fields = ',' + fields + ',';
|
|
//modfiy by Alina 2014/4/26 由於目前其他程式還未掉用公用的Toolbar,而且除了DM以外,其他的程式的按鈕還保持都可用 Star
|
|
// fields = ',' + fields + ',__EVENTTARGET,__EVENTARGUMENT,__VIEWSTATE,__EVENTVALIDATION,';
|
|
fields = ',' + fields + ',__EVENTTARGET,__EVENTARGUMENT,__VIEWSTATE,__EVENTVALIDATION,btnSave,btnDel,btnClear,btnUpd,btnQry,btnImp,btnExp,btnLeave,btnCpy,btnPrint,btnSub,btnChk,btnTmp';
|
|
//modfiy by Alina 2014/4/26 由於目前其他程式還未掉用公用的Toolbar,而且除了DM以外,其他的程式的按鈕還保持都可用 End
|
|
//排除以上四種狀態被disabled,避免無法正確判斷是否postback導致影響程式執行順序而無法正確執行功能。
|
|
//如沒排除則會出現「有瀏覽權限但沒有修改權限」的Upd頁面點選離開按鈕時無法離開。 Add by Gary 2014/03/25
|
|
|
|
//modfiy by Alina 2014/4/26可以取得Toolbar上的所有按鈕的ID Star
|
|
// var inputTypes = new Array("input", "select", "radio", "textarea", "checkbox");
|
|
var inputTypes = new Array("select", "input", "radio", "textarea", "checkbox", "button", "submit");
|
|
//modfiy by Alina 2014/4/26可以取得Toolbar上的所有按鈕的ID End
|
|
|
|
var ArybtnVisible = new Array("btnSave", "btnDel", "btnClear", "btnUpd", "btnQry", "btnImp", "btnExp", "btnLeave", "btnCpy", "btnPrint", "btnSub", "btnChk", "btnTmp");
|
|
for (var intInputCount = 0; intInputCount < inputTypes.length; intInputCount++) {
|
|
var inputArray = $(inputTypes[intInputCount]); //循环得到某种类型的所有元素
|
|
// alert(inputTypes[intInputCount]);
|
|
inputArray.each(
|
|
function () {
|
|
var input = $(this);
|
|
var tempId = input.attr("id");
|
|
// alert(tempId);
|
|
//Modified by Gary,20140325 Start.
|
|
// 先把所有編輯功能鎖定,除了Toolbar
|
|
//mdofiy by Alina 2014/4/26 不禁用fields中的值 Star
|
|
// if (fields.indexOf(',' + tempId + ',') == -1 && ArybtnVisible.indexOf(tempId) == -1) {
|
|
// $('#' + tempId).attr("disabled", "disabled");
|
|
// }
|
|
if (fields.indexOf(',' + tempId + ',') == -1) {
|
|
//$('#' + tempId).attr("disabled", "disabled"); Modify By Gary 2014/07/29 修正如果物件沒有ID則找不到問題。
|
|
$(input).not('.CanShow').attr("disabled", "disabled"); //如果Class等於CanShow,則不隱藏。 Add By Gary 2014/10/16
|
|
|
|
}
|
|
//如果沒有編輯權限時,把所有Toolbar都隱藏,除了fields參數所包含的btnItem
|
|
if (upd != null) {
|
|
|
|
// if (fields.indexOf(',' + tempId + ',') == -1 && ArybtnVisible.indexOf(tempId) != -1) {
|
|
// $('#' + tempId).attr("class", "showoff");
|
|
// }
|
|
//mdofiy by Alina 2014/4/26 tempId的值可以取到Toobar上的按鈕的ID,所以不用再用ArybtnVisible去過濾,Star
|
|
if (Showbtn.indexOf(',' + tempId + ',') >= 0) {
|
|
$('#' + tempId).attr("class", "showoff");
|
|
}
|
|
//mdofiy by Alina 2014/4/26 tempId的值可以取到Toobar上的按鈕的ID,所以不用再用ArybtnVisible去過濾,End
|
|
}
|
|
else {
|
|
//Add by Alina 20141016 有修改權限的,畫面上不需要再顯示修改按鈕和禁用的效果 Star
|
|
fnUpdRemove(); //解禁畫面
|
|
$('#Toolbar1_Upd').attr("class", "displayNone"); //隱藏修改按鈕
|
|
//Add by Alina 20141016 有修改權限的,畫面上不需要再顯示修改按鈕和禁用的效果 End
|
|
}
|
|
//Modified by Gary,20140325 end
|
|
|
|
|
|
}
|
|
)
|
|
}
|
|
|
|
|
|
//分頁部分 Star Add by Jack 20140526 編輯畫面的分頁控件部分不禁用
|
|
// alert(111);
|
|
try {
|
|
|
|
var ele = ".pagebar";
|
|
$(ele).find(':input').each(function () {
|
|
|
|
|
|
switch (this.type) {
|
|
|
|
case 'text':
|
|
// alert(this.id + "AAAA");
|
|
$('#' + this.id).removeAttr("disabled");
|
|
break;
|
|
case 'submit':
|
|
$('#' + this.id).removeAttr("disabled");
|
|
break;
|
|
}
|
|
});
|
|
$(ele).find(':a').each(function () {
|
|
// alert(tempId+"AAAA");
|
|
switch (this.type) {
|
|
case 'button':
|
|
$('#' + this.id).removeAttr("disabled");
|
|
break;
|
|
}
|
|
});
|
|
} catch (e) {
|
|
// alert(e);
|
|
}
|
|
//分頁部分 End Add by Jack 20140526 編輯畫面的分頁控件部分不禁用
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnHiddenUpd()
|
|
* 目的:當畫面有修改權限時,需要把修改按鈕隱藏掉
|
|
* 作者:Alina
|
|
* 時間:2014/11/15
|
|
*********************************************/
|
|
function fnHiddenUpd() {
|
|
$('#Toolbar1_Upd').attr("class", "displayNone"); //隱藏修改按鈕
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnUpdRemove(fields)
|
|
* 目的:禁用頁面所有控件,排除指定ID的控件
|
|
* 作者:Gary
|
|
* 時間:2014/03/25
|
|
* 參數說明:解除disabled
|
|
* 範例:fnUpdRemove();
|
|
*********************************************/
|
|
function fnUpdRemove(fields) {
|
|
fnLoadPageSaveValueAAA();
|
|
//modfiy by Alina 2014/4/26 這個方法是啟用畫面上所有的控件,所以需要可以取得所有的ID,包括Toolbar上的所有按鈕的ID和 checkbox Star
|
|
var inputTypes = new Array("input", "select", "radio", "textarea", "checkbox", "button", "submit");
|
|
//modfiy by Alina 2014/4/26 這個方法是啟用畫面上所有的控件,所以需要可以取得所有的ID,包括Toolbar上的所有按鈕的ID和 checkbox End
|
|
|
|
for (var intInputCount = 0; intInputCount < inputTypes.length; intInputCount++) {
|
|
var inputArray = $(inputTypes[intInputCount]); //循环得到某种类型的所有元素
|
|
inputArray.each(
|
|
function () {
|
|
var input = $(this);
|
|
var tempId = input.attr("id");
|
|
var att_readonly = input.attr("readonly");
|
|
// alert(tempId);
|
|
if (fields == null) {
|
|
//Modify Start 保留ReadOnly屬性即可,不需一次保留ReadOnly跟Disabled,有Disabled會導致後台無法讀取值 Modify By Gary 2014/07/10
|
|
if (inputTypes[intInputCount] == "select" && att_readonly == "readonly") {
|
|
}
|
|
else {
|
|
//$('#' + tempId).removeAttr("disabled"); Modify By Gary 2014/07/29 修正如果物件沒有ID則找不到問題。
|
|
$(input).removeAttr("disabled");
|
|
}
|
|
//Modify End 保留ReadOnly屬性即可,不需一次保留ReadOnly跟Disabled,有Disabled會導致後台無法讀取值 Modify By Gary 2014/07/10
|
|
|
|
}
|
|
else {
|
|
if (fields.indexOf(tempId) == -1) {
|
|
//tempId不在fields裡時,才啟用
|
|
|
|
if (att_readonly != "readonly") {
|
|
$(input).removeAttr("disabled");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnGetQueryString(name)
|
|
* 目的:獲取Url參數
|
|
* 作者:Ethan
|
|
* 時間:2012/12/18
|
|
* 參數說明:name:參數名稱
|
|
* 範例:fnGetQueryString('Action');
|
|
*********************************************/
|
|
function fnGetQueryString(name) {
|
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
|
var r = window.location.search.substr(1).match(reg);
|
|
if (r != null) return unescape(r[2]); return null;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnChenckGridviewRowCount()
|
|
* 目的:驗證匯出是否有資料
|
|
* 作者:Ethan
|
|
* 時間:2012/12/12
|
|
* 參數說明:strGridId:GridView的ID
|
|
* 範例:OnClientClick="return fnChenckGridviewRowCount();"
|
|
*********************************************/
|
|
function fnChenckGridviewRowCount(strGridId) {
|
|
var intGridviewRowCount = $("table[id$='" + strGridId + "']>tbody").children("tr").length;
|
|
//ShowArtAlert(intGridviewRowCount);
|
|
if (intGridviewRowCount == 1) {
|
|
ShowArtAlert("無資料匯出!");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:Url编码
|
|
* 目的:JS UrlEncode加密
|
|
* 作者:Ethan
|
|
* 時間:2012/09/01
|
|
* 參數說明:unzipStr:傳入的參數
|
|
*********************************************/
|
|
fnUrlEncode = function (unzipStr) {
|
|
var zipstr = "";
|
|
var strSpecial = "!\"#$%&'()*+,/:;<=>?[]^`{|}~%";
|
|
var tt = "";
|
|
for (var i = 0; i < unzipStr.length; i++) {
|
|
var chr = unzipStr.charAt(i);
|
|
var c = StringToAscii(chr);
|
|
tt += chr + ":" + c + "n";
|
|
if (parseInt("0x" + c) > 0x7f) {
|
|
zipstr += encodeURI(unzipStr.substr(i, 1));
|
|
} else {
|
|
if (chr == " ")
|
|
zipstr += "+";
|
|
else if (strSpecial.indexOf(chr) != -1)
|
|
zipstr += "%" + c.toString(16);
|
|
else
|
|
zipstr += chr;
|
|
}
|
|
}
|
|
return zipstr;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱: Url解码
|
|
* 目的:JS UrlDecode解密
|
|
* 作者:Ethan
|
|
* 時間:2012/09/01
|
|
* 參數說明:zipStr:傳入的參數
|
|
*********************************************/
|
|
fnUrlDecode = function (zipStr) {
|
|
var uzipStr = "";
|
|
for (var i = 0; i < zipStr.length; i++) {
|
|
var chr = zipStr.charAt(i);
|
|
if (chr == "+") {
|
|
uzipStr += " ";
|
|
} else if (chr == "%") {
|
|
var asc = zipStr.substring(i + 1, i + 3);
|
|
if (parseInt("0x" + asc) > 0x7f) {
|
|
uzipStr += decodeURI("%" + asc.toString() + zipStr.substring(i + 3, i + 9).toString()); ;
|
|
i += 8;
|
|
} else {
|
|
uzipStr += AsciiToString(parseInt("0x" + asc));
|
|
i += 2;
|
|
}
|
|
} else {
|
|
uzipStr += chr;
|
|
}
|
|
}
|
|
return uzipStr;
|
|
}
|
|
|
|
StringToAscii = function (str) {
|
|
return str.charCodeAt(0).toString(16);
|
|
}
|
|
|
|
AsciiToString = function (asccode) {
|
|
return String.fromCharCode(asccode);
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:Date.dateAdd
|
|
* 目的:日期添加屬性
|
|
* 作者:Ethan
|
|
* 時間:2012/09/01
|
|
* 參數說明:interval:y:年;q:季度;m:月;w:星期;d:天;h:小時;n:分;s:秒;ms:毫秒;number:添加的數值;
|
|
*********************************************/
|
|
Date.prototype.dateAdd = function (interval, number) {
|
|
var d = this;
|
|
var k = { 'y': 'FullYear', 'q': 'Month', 'm': 'Month', 'w': 'Date', 'd': 'Date', 'h': 'Hours', 'n': 'Minutes', 's': 'Seconds', 'ms': 'MilliSeconds' };
|
|
var n = { 'q': 3, 'w': 7 };
|
|
eval('d.set' + k[interval] + '(d.get' + k[interval] + '()+' + ((n[interval] || 1) * number) + ')');
|
|
return d;
|
|
}
|
|
|
|
/**
|
|
* 对Date的扩展,将 Date 转化为指定格式的String
|
|
* 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
|
|
* 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
|
|
* eg:
|
|
* (new Date()).formate("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
|
|
* (new Date()).formate("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
|
|
* (new Date()).formate("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
|
|
* (new Date()).formate("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
|
|
* (new Date()).formate("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
|
|
*/
|
|
Date.prototype.formate = function (fmt) {
|
|
var o = {
|
|
"M+": this.getMonth() + 1, //月份
|
|
"d+": this.getDate(), //日
|
|
"h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
|
|
"H+": this.getHours(), //小时
|
|
"m+": this.getMinutes(), //分
|
|
"s+": this.getSeconds(), //秒
|
|
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
|
|
"S": this.getMilliseconds() //毫秒
|
|
};
|
|
var week = {
|
|
"0": "\u65e5",
|
|
"1": "\u4e00",
|
|
"2": "\u4e8c",
|
|
"3": "\u4e09",
|
|
"4": "\u56db",
|
|
"5": "\u4e94",
|
|
"6": "\u516d"
|
|
};
|
|
if (/(y+)/.test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
}
|
|
if (/(E+)/.test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
|
|
}
|
|
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;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnFrameGoUrl(strFrameName,strGoUrl)
|
|
* 目的:指定Frame跳轉到指定的Url
|
|
* 作者:Ethan
|
|
* 時間:2012/08/06
|
|
* 參數說明:strFrameName:Frame的名稱;strGoUrl:跳轉的目標Url;
|
|
*********************************************/
|
|
function fnFrameGoUrl(strFrameName, strGoUrl) {
|
|
window.parent.frames[strFrameName].location = strGoUrl;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnShowOrHidMenu(objButton)
|
|
* 目的:顯示或者隱藏Menu區域
|
|
* 作者:Ethan
|
|
* 時間:2012/08/07
|
|
* 參數說明:objButton:觸發事件按鈕;
|
|
* 無法執行時請確認CSS有此Class
|
|
*********************************************/
|
|
function fnShowOrHidMenu(objButton) {
|
|
if (window.parent.document.getElementById("Content").cols == "200px,*") {
|
|
window.parent.document.getElementById("Content").cols = "0px,*";
|
|
objButton.className = "righticon";
|
|
}
|
|
else {
|
|
window.parent.document.getElementById("Content").cols = "200px,*";
|
|
objButton.className = "lefticon";
|
|
}
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnShowOrHidMenu(objButton)
|
|
* 目的:顯示或者隱藏Header區域
|
|
* 作者:Ethan
|
|
* 時間:2012/08/07
|
|
* 參數說明:objButton:觸發事件按鈕;
|
|
* 無法執行時請確認CSS有此Class
|
|
*********************************************/
|
|
function fnShowOrHidHeader(objButton) {
|
|
if (window.parent.document.getElementById("Header").rows == "85px,55px,*,30px") {
|
|
window.parent.document.getElementById("Header").rows = "0px,55px,*,30px";
|
|
objButton.className = "tooldown right";
|
|
}
|
|
else {
|
|
window.parent.document.getElementById("Header").rows = "85px,55px,*,30px";
|
|
objButton.className = "toolup right";
|
|
}
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnSetToolbarVisible(objOperationWindow)
|
|
* 目的:Operation頁面加載後設定Toolbar的顯示狀態,在BasePage調用。
|
|
* 作者:Ethan
|
|
* 時間:2012/08/10
|
|
* 參數說明:objOperationWindow:Operation的Window對象。
|
|
*********************************************/
|
|
function fnSetToolbarVisible(objOperationWindow) {
|
|
try {
|
|
//ShowArtAlert(objOperationWindow.document.getElementById("tbToolbar").getElementsByTagName("input").length);
|
|
if (objOperationWindow.document.getElementById("tbToolbar") != null) {
|
|
var objToolbarButtons = objOperationWindow.document.getElementById("tbToolbar").getElementsByTagName("input");
|
|
if (objOperationWindow.name == "Operation" && objToolbarButtons != null) {
|
|
//如果是操作區域
|
|
|
|
//添加Tabs
|
|
//ShowArtAlert(objOperationWindow.location);
|
|
Tabs_Add(objOperationWindow.location, window.parent.frames["Operation"].document.getElementById("lbFunctionTitle").innerText);
|
|
|
|
//ShowArtAlert(window.parent.frames["Toolbar"].document.getElementById("ulToolbar").getElementsByTagName("li").length);
|
|
var objToolbarLis = window.parent.frames["Toolbar"].document.getElementById("ulToolbar").getElementsByTagName("li");
|
|
for (var i = 0, j = objToolbarLis.length; i < j; i++) {
|
|
//ShowArtAlert(objToolbarLis.item(i).style.display);
|
|
objToolbarLis.item(i).style.display = 'none';
|
|
}
|
|
//window.parent.frames["Toolbar"].document.getElementById("liTopButton").style.display = '';
|
|
for (var i = 0, j = objToolbarButtons.length; i < j; i++) {
|
|
//ShowArtAlert(objToolbarButtons.item(i).id);
|
|
var objLi = window.parent.frames["Toolbar"].document.getElementById(objToolbarButtons.item(i).id.replace("btn", "li"));
|
|
//ShowArtAlert(objToolbarButtons[i].disabled);
|
|
if (objLi != null && (objToolbarButtons[i].disabled == undefined || objToolbarButtons[i].disabled == false)) {
|
|
window.parent.frames["Toolbar"].document.getElementById(objToolbarButtons.item(i).id.replace("btn", "li")).style.display = '';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
//ShowArtAlert("請重新登入!");
|
|
if (objOperationWindow.name == "Operation" && location.href.indexOf("ModuleDefault.aspx") > -1) {
|
|
//如果是操作區域,ModuleDefault.aspx,則隱藏Toolbar.
|
|
//ShowArtAlert(window.parent.frames["Toolbar"].document.getElementById("ulToolbar").getElementsByTagName("li").length);
|
|
var objToolbarLis = window.parent.frames["Toolbar"].document.getElementById("ulToolbar").getElementsByTagName("li");
|
|
for (var i = 0, j = objToolbarLis.length; i < j; i++) {
|
|
//ShowArtAlert(objToolbarLis.item(i).style.display);
|
|
objToolbarLis.item(i).style.display = 'none';
|
|
}
|
|
}
|
|
//window.parent.frames["Toolbar"].document.getElementById("liTopButton").style.display = '';
|
|
}
|
|
} catch (e) { }
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:ToolBar_click(Tag)
|
|
* 目的:Toolbar頁面點擊調用內容頁面方法
|
|
* 作者:Ethan
|
|
* 時間:2012/08/06
|
|
* 參數說明:Tag:事件標誌
|
|
*********************************************/
|
|
function ToolBar_click(Tag) {
|
|
try {
|
|
window.parent.frames["Operation"].document.getElementById("btn" + Tag).click();
|
|
} catch (e) { }
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:ToolBar_click(Tag)
|
|
* 目的:Toolbar頁面點擊調用內容頁面方法
|
|
* 作者:Ethan
|
|
* 時間:2012/08/06
|
|
* 參數說明:Tag:事件標誌
|
|
*********************************************/
|
|
function Tabs_Add(Url, Tag) {
|
|
try {
|
|
|
|
//先判斷此TAG是否存在,此TAG 為PROGRAM裡面某個欄位 TAGNAME
|
|
|
|
|
|
|
|
//如果存在 將裡面的URL 更新
|
|
|
|
|
|
//如果不存在 加上一個新的TAB
|
|
|
|
var objTabsUl = window.parent.frames["Toolbar"].document.getElementById("ulTabs");
|
|
var tabTemplate = document.createElement("li");
|
|
tabTemplate.innerHTML = "<li><a href='" + Url + "' target='Operation'>" + Tag + "</a> <span class='ui-icon ui-icon-close' role='presentation'>Remove Tab</span></li>";
|
|
//SPAN 裡面加IFRAME
|
|
|
|
//ShowArtAlert(objTabsUl.innerHTML);
|
|
//ShowArtAlert(tabTemplate);
|
|
objTabsUl.appendChild(tabTemplate);
|
|
//ShowArtAlert(objTabsUl.innerHTML);
|
|
} catch (e) { }
|
|
}
|
|
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnChkAllBox(blIsChecked)
|
|
* 目的:選中或者取消選中頁面中的checkbox
|
|
* 作者:Ethan
|
|
* 時間:2012/03/14
|
|
* 參數說明:blIsChecked:設置checkbox的狀態
|
|
*********************************************/
|
|
function fnChkAllBox(blIsChecked) {
|
|
$("input[type='checkbox']").each(function () {
|
|
this.checked = blIsChecked;
|
|
});
|
|
return false;
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnChkAllBox(blIsChecked)
|
|
* 目的:選中或者取消選中頁面中的checkbox
|
|
* 作者:Ethan
|
|
* 時間:2012/03/14
|
|
* 參數說明:objSelAll:全選控件
|
|
* 使用範例:在全選Checkbox上的onclick="fnChkAllBoxByCtl(this);"
|
|
*********************************************/
|
|
function fnChkAllBoxByCtl(objSelAll) {
|
|
$("input[type='checkbox']").each(function () {
|
|
this.checked = objSelAll.checked;
|
|
});
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnChkAllBox(blIsChecked)
|
|
* 目的:選中或者取消選中頁面中的checkbox
|
|
* 作者:Ethan
|
|
* 時間:2012/03/14
|
|
* 參數說明:objSelAll:全選控件
|
|
* 使用範例:在全選Checkbox上的onclick="fnChkAllBoxByCtl(this);"
|
|
*********************************************/
|
|
function fnChkAllBoxByCtlAndGrid(objSelAll, strGridId) {
|
|
$("input[type='checkbox']").each(function () {
|
|
if (this.id.indexOf(strGridId) != -1) {
|
|
this.checked = objSelAll.checked;
|
|
}
|
|
});
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnChkAllBox(blIsChecked)
|
|
* 目的:選中或者取消選中頁面中的checkbox
|
|
* 作者:Ethan
|
|
* 時間:2012/03/14
|
|
* 參數說明:blIsChecked:設置checkbox的狀態
|
|
*********************************************/
|
|
function fnChkAllModuleBox(objChkAll, strChkType, strModuleID) {
|
|
if (objChkAll.checked) {
|
|
// alert(strChkType);
|
|
//alert(strModuleID);
|
|
$("input[type='checkbox']").each(function () {
|
|
|
|
//alert($(this).attr('moduleid'));
|
|
// Del by jack 20140529 不用判斷父層,直接判斷它的moduleid start
|
|
//if (this.id.indexOf(strChkType) > -1 && $(this).parent().attr('moduleid') == strModuleID) {
|
|
// Del by jack 20140529 不用判斷父層,直接判斷它的moduleid start
|
|
if (this.id.indexOf(strChkType) > -1 && $(this).attr('moduleid') == strModuleID) {
|
|
//alert(2);
|
|
this.checked = true;
|
|
}
|
|
|
|
});
|
|
}
|
|
else {
|
|
$("input[type='checkbox']").each(function () {
|
|
// Del by jack 20140529 不用判斷父層,直接判斷它的moduleid start
|
|
//if (this.id.indexOf(strChkType) > -1 && $(this).parents("span").attr('moduleid') == strModuleID) {
|
|
// Del by jack 20140529 不用判斷父層,直接判斷它的moduleid start
|
|
if (this.id.indexOf(strChkType) > -1 && $(this).attr('moduleid') == strModuleID) {
|
|
//alert(3);
|
|
this.checked = false;
|
|
}
|
|
});
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnReInitIframe()
|
|
* 目的:調整功能區的高度
|
|
* 作者:Ethan
|
|
* 時間:2012/03/15
|
|
* 參數說明:
|
|
*********************************************/
|
|
function fnShowIframeMenu(objImg) {
|
|
var tdMenu1 = top.document.getElementById("tdMenu1");
|
|
var iframeMenu = top.document.getElementById("iframeMenu");
|
|
try {
|
|
objImg.src = objImg.src.indexOf("arrow-r.gif") > -1 ? "../../App_Themes/Default/Images/arrow-l.gif" : "../../App_Themes/Default/Images/arrow-r.gif";
|
|
//ShowArtAlert(tdMenu1.style.width);
|
|
iframeMenu.style.display = iframeMenu.style.display == "none" ? "" : "none";
|
|
//ShowArtAlert(iframeMenu.style.display);
|
|
tdMenu1.style.width = tdMenu1.style.width == "290px" ? "10px" : "290px";
|
|
//ShowArtAlert(tdMenu1.style.width);
|
|
}
|
|
catch (ex) {
|
|
}
|
|
}
|
|
|
|
/********************************************
|
|
* 屬性名稱:indexOf
|
|
* 目的:給Arry添加查找Index屬性
|
|
* 作者:Ethan
|
|
* 時間:2012/03/15
|
|
* 參數說明:Arry.indexOf(val)
|
|
*********************************************/
|
|
Array.prototype.indexOf = function (val) {
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (this[i] == val) return i;
|
|
}
|
|
return -1;
|
|
};
|
|
/********************************************
|
|
* 方法名稱:AddMoneyFormat(id)
|
|
* 目的:金額添加三位一撇
|
|
* 作者:John
|
|
* 時間:2014/03/18
|
|
* 參數說明:
|
|
*********************************************/
|
|
|
|
function AddMoneyFormat(objID) {
|
|
var objValue = document.getElementById(objID);
|
|
objValue.value = objValue.value.replace(/\d+?(?=(?:\d{3})+$)/g, function (s) {
|
|
return s + ',';
|
|
});
|
|
}
|
|
/********************************************
|
|
* 方法名稱:DelMoneyFormat(id)
|
|
* 目的:金額去除三位一撇
|
|
* 作者:John
|
|
* 時間:2014/04/18
|
|
* 參數說明:
|
|
*********************************************/
|
|
function DelMoneyFormat(objID) {
|
|
var objValue = document.getElementById(objID);
|
|
objValue.value = objValue.value.replace(/,/g, '');
|
|
}
|
|
/********************************************
|
|
* 方法名稱:SetMoneyFormat(obj)
|
|
* 目的:使用三位一撇在文字更變時
|
|
* 作者:Gary
|
|
* 時間:2014/06/02
|
|
* 參數說明:
|
|
*********************************************/
|
|
function SetMoneyFormat(obj) {
|
|
DelMoneyFormat(obj.id);
|
|
AddMoneyFormat(obj.id);
|
|
}
|
|
/********************************************
|
|
* 屬性名稱:remove()
|
|
* 目的:給Arry添加刪除指定值屬性
|
|
* 作者:Ethan
|
|
* 時間:2012/03/15
|
|
* 參數說明:var array = [1, 2, 3, 4, 5];array.remove(3);
|
|
*********************************************/
|
|
Array.prototype.remove = function (val) {
|
|
var index = this.indexOf(val);
|
|
if (index > -1) {
|
|
this.splice(index, 1);
|
|
}
|
|
};
|
|
|
|
function fnWinDialog(strUrl, strParam) {
|
|
return window.showModalDialog(strUrl, strParam, 'location:no;dialogWidth=700px;dialogHeight=550px');
|
|
}
|
|
|
|
/********************************************
|
|
* 屬性名稱:remove()
|
|
* 目的:頁面列印,只會列印<!--startprint--><!--endprint-->之間的內容。
|
|
* 作者:Ethan
|
|
* 時間:2012/05/06
|
|
*********************************************/
|
|
function fnPrint() {
|
|
var bdhtml = window.document.body.innerHTML;
|
|
var sprnstr = "<!--startprint-->";
|
|
var eprnstr = "<!--endprint-->";
|
|
var prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);
|
|
prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
|
|
|
|
var strprnhtml = bdhtml.substr(bdhtml.lastIndexOf(sprnstr) + 17);
|
|
strprnhtml = strprnhtml.substring(0, strprnhtml.indexOf(eprnstr));
|
|
|
|
var strCSS = " <style type=\"text/css\">body{font-family: 微軟正黑體;font-size: 15px;}</style> ";
|
|
prnhtml = strCSS + prnhtml + strprnhtml;
|
|
|
|
window.document.body.innerHTML = prnhtml;
|
|
window.focus(); ///加了这个后才有效果
|
|
window.print();
|
|
window.document.body.innerHTML = bdhtml;
|
|
return false;
|
|
}
|
|
|
|
/********************************************
|
|
* 屬性名稱:funOpenFile(Url,FileName)
|
|
* 目的:下載檔案
|
|
* 作者:Ethan
|
|
* 時間:2012/05/10
|
|
* 參數說明:Url文件下載地址,FileName:檔案原始名稱
|
|
*********************************************/
|
|
function funOpenFile(Url, FileName) {
|
|
//ShowArtAlert(Url);
|
|
var width = screen.availWidth;
|
|
var height = screen.availHeight;
|
|
var strU = funStringToBase64(Url);
|
|
var resStr = "";
|
|
for (var i = 0; i < strU.length; i++) {
|
|
resStr = resStr + (strU.substring(i, i + 1)).replace('=', '!').replace("/", "@").replace("+", "*");
|
|
}
|
|
var strUrl = "../../OpenFile.aspx?U=" + resStr + "&FileName=" + FileName;
|
|
//ShowArtAlert(strUrl);
|
|
window.open(strUrl, '', 'width=' + width + 'px,height=' + height + 'px,dependent,left=0,top=0');
|
|
}
|
|
|
|
/********************************************
|
|
* 屬性名稱:funStringToBase64(input)
|
|
* 目的:字符串Base64編碼
|
|
* 作者:Ethan
|
|
* 時間:2012/05/24
|
|
* 參數說明:input:需要轉換的字符串
|
|
*********************************************/
|
|
function funStringToBase64(input) {
|
|
var keyStr = "ABCDEFGHIJKLMNOP" +
|
|
"QRSTUVWXYZabcdef" +
|
|
"ghijklmnopqrstuv" +
|
|
"wxyz0123456789+/" +
|
|
"=";
|
|
|
|
input = escape(input);
|
|
var output = "";
|
|
var chr1, chr2, chr3 = "";
|
|
var enc1, enc2, enc3, enc4 = "";
|
|
var i = 0;
|
|
|
|
do {
|
|
chr1 = input.charCodeAt(i++);
|
|
chr2 = input.charCodeAt(i++);
|
|
chr3 = input.charCodeAt(i++);
|
|
|
|
enc1 = chr1 >> 2;
|
|
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
|
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
|
enc4 = chr3 & 63;
|
|
|
|
if (isNaN(chr2)) {
|
|
enc3 = enc4 = 64;
|
|
} else if (isNaN(chr3)) {
|
|
enc4 = 64;
|
|
}
|
|
|
|
output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
|
|
chr1 = chr2 = chr3 = "";
|
|
enc1 = enc2 = enc3 = enc4 = "";
|
|
} while (i < input.length);
|
|
|
|
return output;
|
|
}
|
|
|
|
/********************************************
|
|
* 屬性名稱:funStringToBase64(input)
|
|
* 目的:Base64解碼成字符串
|
|
* 作者:Ethan
|
|
* 時間:2012/05/24
|
|
* 參數說明:input:需要轉換的字符串
|
|
*********************************************/
|
|
function funBase64ToString(input) {
|
|
var keyStr = "ABCDEFGHIJKLMNOP" +
|
|
"QRSTUVWXYZabcdef" +
|
|
"ghijklmnopqrstuv" +
|
|
"wxyz0123456789+/" +
|
|
"=";
|
|
|
|
var output = "";
|
|
var chr1, chr2, chr3 = "";
|
|
var enc1, enc2, enc3, enc4 = "";
|
|
var i = 0;
|
|
var base64test = /[^A-Za-z0-9\+\/\=]/g;
|
|
if (base64test.exec(input)) {
|
|
}
|
|
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|
|
|
do {
|
|
enc1 = keyStr.indexOf(input.charAt(i++));
|
|
enc2 = keyStr.indexOf(input.charAt(i++));
|
|
enc3 = keyStr.indexOf(input.charAt(i++));
|
|
enc4 = keyStr.indexOf(input.charAt(i++));
|
|
|
|
chr1 = (enc1 << 2) | (enc2 >> 4);
|
|
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
|
chr3 = ((enc3 & 3) << 6) | enc4;
|
|
|
|
output = output + String.fromCharCode(chr1);
|
|
|
|
if (enc3 != 64) {
|
|
output = output + String.fromCharCode(chr2);
|
|
}
|
|
if (enc4 != 64) {
|
|
output = output + String.fromCharCode(chr3);
|
|
}
|
|
|
|
chr1 = chr2 = chr3 = "";
|
|
|
|
enc1 = enc2 = enc3 = enc4 = "";
|
|
|
|
} while (i < input.length);
|
|
|
|
return unescape(output);
|
|
}
|
|
|
|
function fnSetErrorImg(obj) {
|
|
obj.src = "/App_Themes/Default/Images/errorpic.png";
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 屬性名稱:全屏覆蓋提示框
|
|
* 目的:全屏覆蓋提示框
|
|
* 作者:Ethan
|
|
* 時間:2012/07/19
|
|
* 參數說明:strShowMsg:需要提示的信息
|
|
*********************************************/
|
|
function ShowAlert(strShowMsg) {
|
|
var msgw, msgh, bordercolor;
|
|
msgw = 400; //提示窗口的寬度
|
|
msgh = 100; //提示窗口的高度
|
|
titleheight = 25 //提示窗口標題高度
|
|
bordercolor = "#336699"; //提示窗口的邊框顏色
|
|
titlecolor = "#99CCFF"; //提示窗口的邊框顏色
|
|
|
|
var sWidth, sHeight;
|
|
sWidth = document.body.offsetWidth;
|
|
sHeight = screen.height;
|
|
var bgObj = document.createElement("div");
|
|
bgObj.setAttribute('id', 'bgDiv');
|
|
bgObj.style.position = "absolute";
|
|
bgObj.style.top = "0";
|
|
bgObj.style.background = "#777";
|
|
bgObj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
|
|
bgObj.style.opacity = "0.6";
|
|
bgObj.style.left = "0";
|
|
bgObj.style.width = sWidth + "px";
|
|
bgObj.style.height = sHeight + "px";
|
|
bgObj.style.zIndex = "10000";
|
|
document.body.appendChild(bgObj);
|
|
|
|
var msgObj = document.createElement("div")
|
|
msgObj.setAttribute("id", "msgDiv");
|
|
msgObj.setAttribute("align", "center");
|
|
msgObj.style.background = "white";
|
|
msgObj.style.border = "1px solid " + bordercolor;
|
|
msgObj.style.position = "absolute";
|
|
msgObj.style.left = "50%";
|
|
msgObj.style.top = "50%";
|
|
msgObj.style.font = "12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
|
|
msgObj.style.marginLeft = "-225px";
|
|
msgObj.style.marginTop = -75 + document.documentElement.scrollTop + "px";
|
|
msgObj.style.width = msgw + "px";
|
|
msgObj.style.height = msgh + "px";
|
|
msgObj.style.textAlign = "center";
|
|
msgObj.style.lineHeight = "25px";
|
|
msgObj.style.zIndex = "10001";
|
|
|
|
var title = document.createElement("h4");
|
|
title.setAttribute("id", "msgTitle");
|
|
title.setAttribute("align", "right");
|
|
title.style.margin = "0";
|
|
title.style.padding = "3px";
|
|
title.style.background = bordercolor;
|
|
title.style.filter = "progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
|
|
title.style.opacity = "0.75";
|
|
title.style.border = "1px solid " + bordercolor;
|
|
title.style.height = "18px";
|
|
title.style.font = "12px Verdana, Geneva, Arial, Helvetica, sans-serif";
|
|
title.style.color = "white";
|
|
title.style.cursor = "pointer";
|
|
title.innerHTML = "關閉";
|
|
title.onclick = function () {
|
|
document.body.removeChild(bgObj);
|
|
document.getElementById("msgDiv").removeChild(title);
|
|
document.body.removeChild(msgObj);
|
|
}
|
|
document.body.appendChild(msgObj);
|
|
document.getElementById("msgDiv").appendChild(title);
|
|
var txt = document.createElement("p");
|
|
txt.style.margin = "1em 0"
|
|
txt.setAttribute("id", "msgTxt");
|
|
txt.innerHTML = strShowMsg;
|
|
document.getElementById("msgDiv").appendChild(txt);
|
|
}
|
|
|
|
|
|
function Transfer(obj, num) {
|
|
var _value = parseFloat(obj.value);
|
|
if (isNaN(_value)) {
|
|
return;
|
|
}
|
|
obj.value = _value.toFixed(num);
|
|
}
|
|
|
|
try {
|
|
$(function () {
|
|
$("input[type='text'][Amount='true']").bind("focus", function () {
|
|
if ($(this).val() == "0") {
|
|
$(this).val("");
|
|
}
|
|
});
|
|
|
|
$("input[type='text'][Amount='true']").bind("blur", function () {
|
|
if ($(this).val() == "") {
|
|
$(this).val("0");
|
|
}
|
|
});
|
|
setTimeout(LoadDateJs, 200);
|
|
setTimeout(fnLoadPopDiv, 200);
|
|
|
|
try {
|
|
var prm = Sys.WebForms.PageRequestManager.getInstance();
|
|
prm.add_endRequest(function () {
|
|
LoadDateJs();
|
|
fnLoadPopDiv();
|
|
});
|
|
}
|
|
catch (e) {
|
|
;
|
|
}
|
|
});
|
|
}
|
|
catch (e) { ; }
|
|
|
|
function fnLoadPopDiv() {
|
|
$(".popdiv").each(function (i, val) {
|
|
rDrag.init(val);
|
|
});
|
|
$("[iscanmove='true']").each(function (i, val) {
|
|
rDrag.init(val);
|
|
});
|
|
}
|
|
|
|
function LoadDateJs() {
|
|
//$("input[isdatectl='true']").datepicker({ showOn: 'button', buttonImage: '../../App_Themes/Default/Images/calendar.gif', buttonImageOnly: true });
|
|
$("input[isdatectl='true']").each(function (i, val) {
|
|
if (($(this).attr("disabled") == false || $(this).attr("disabled") == undefined) && ($(this).attr("readonly") == false || $(this).attr("readonly") == undefined)) {
|
|
val.onmousemove();
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function fnLoadPageSaveValueAAA() {
|
|
//alert('123');
|
|
//alert("hi");
|
|
$(".text-user input,.box-style textarea,.box-style select,.box-style checked,#hidChangeShow").each(function () {
|
|
$(this).attr('_value', $(this).val());
|
|
});
|
|
$(".text-user input").each(function () {
|
|
switch (this.type) {
|
|
case 'checkbox':
|
|
if (this.checked) {
|
|
$(this).attr('_value', $(this).val());
|
|
} else { $(this).attr('_value', null); }
|
|
//↓↓↓↓↓add by Gary 2014/07/09 排除radio清除功能不正常問題
|
|
case 'radio':
|
|
if (this.checked) {
|
|
$(this).attr('_value', 'true');
|
|
} else { $(this).attr('_value', null); }
|
|
//↑↑↑↑↑add by Gary 2014/07/09 排除radio清除功能不正常問題
|
|
}
|
|
});
|
|
$(".box-style select").each(function () {
|
|
if ($(this).attr("id").indexOf("dr") > -1) {
|
|
//下拉選單
|
|
$(this).attr('_value', $(this).val());
|
|
}
|
|
else {
|
|
//ListBox
|
|
var value = "";
|
|
var hidValue = "";
|
|
$(this).find('option').each(function () {
|
|
if ($(this).val() != "") {
|
|
value += $(this).val() + "/" + $(this).text() + "|";
|
|
hidValue += ($(this).val() + "|");
|
|
}
|
|
});
|
|
$(this).attr('_value', value);
|
|
|
|
switch (this.name) {
|
|
case 'lstRight':
|
|
if ((hidValue != "") && (hidValue != null)) {
|
|
$(this).attr('hidValue', hidValue);
|
|
//alert($(this).attr('hidValue') + 555);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
//alert(777);
|
|
}
|
|
function fnTestAAA() {
|
|
//alert(9999);
|
|
fnLoadPageSaveValueAAA();
|
|
//setTimeout("fnLoadPageChangeJs", 5000);
|
|
//setTimeout("fnLoadPageSaveValueAAA", 300);
|
|
//alert(888);
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnClientAllClear(element)
|
|
* 目的:清除功能Client
|
|
* 作者:Dean
|
|
* 時間:2014/06/03
|
|
* 參數說明:主要是用在除了Qry頁面中的清除功能
|
|
* 目前會預設清除#text-user裡面的所有物件
|
|
* 若有其他的清除項目則由各Page內增加清除的項目
|
|
* 增加此函數在於避免有些用不到的PAGE忘記加時會出現錯誤
|
|
*********************************************/
|
|
function fnClientAllClear(ele) {
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
function fnGetReturn_Supplier(strSupplierId, strTELId, strSupplierNameId, strSuptypeId, strContactId) {
|
|
var returnValue = window.showModalDialog('../SYS/DrawSupplier_Pop.aspx', '委外資料', 'location:no;titlebar:no;toolbar:no;dialogWidth:800px;dialogHeight:600px');
|
|
if (returnValue != null) {
|
|
if (strSupplierId != "")
|
|
document.getElementById(strSupplierId).value = returnValue.SupplierID;
|
|
if (strTELId != "")
|
|
document.getElementById(strTELId).value = returnValue.TEL;
|
|
if (strSupplierNameId != "")
|
|
document.getElementById(strSupplierNameId).value = returnValue.SupplierName;
|
|
if (strSuptypeId != "")
|
|
document.getElementById(strSuptypeId).value = returnValue.Suptype;
|
|
if (strContactId != "")
|
|
document.getElementById(strContactId).value = returnValue.Contact;
|
|
// var objSupplierName = document.getElementById("txtSupplierName");
|
|
// var objSupplierFullName = document.getElementById("hidSupplierFullName");
|
|
|
|
|
|
// objSupplierName.value = returnValue.SupplierName;
|
|
|
|
|
|
//Page_ClientValidate("");
|
|
// if (document.getElementById("rfvCustomerName") != undefined) {
|
|
// document.getElementById("rfvCustomerName").style.display = "none";
|
|
// }
|
|
}
|
|
else {
|
|
//ShowArtAlert('無選擇資料');
|
|
}
|
|
return false;
|
|
}
|
|
function fnGetReturn_Customer(strCustomerId, strTELId, strSnoId, strCustomerNameId, strContactId, strADDId) {
|
|
var returnValue;
|
|
returnValue = window.showModalDialog('../SYS/DrawCustomer_Pop.aspx', '客戶資料', 'location:no;titlebar:no;toolbar:no;dialogWidth:800px;dialogHeight:600px');
|
|
if (returnValue != null) {
|
|
if (strCustomerId != "")
|
|
document.getElementById(strCustomerId).value = returnValue.CustomerID;
|
|
if (strTELId != "")
|
|
document.getElementById(strTELId).value = returnValue.TEL;
|
|
if (strSnoId != "")
|
|
document.getElementById(strSnoId).value = returnValue.Sno;
|
|
if (strCustomerNameId != "")
|
|
document.getElementById(strCustomerNameId).value = returnValue.CustomerName;
|
|
if (strContactId != "")
|
|
document.getElementById(strContactId).value = returnValue.Contact;
|
|
if (strADDId != "")
|
|
document.getElementById(strADDId).value = returnValue.ADD;
|
|
}
|
|
else {
|
|
//ShowArtAlert('無選擇資料');
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function CloseWin() {
|
|
|
|
window.opener = null;
|
|
window.open("", "_self");
|
|
window.close();
|
|
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnLoadPageSaveValueAAA(element)
|
|
* 目的:紀錄清除前之值功能
|
|
* 作者:Jack
|
|
* 時間:2014/06/03
|
|
* 參數說明:
|
|
|
|
*********************************************/
|
|
|
|
function fnLoadPageSaveValueAAA() {
|
|
//alert('123');
|
|
//.box-style select,.box-style checked,
|
|
$(".text-user input,.text-user textarea,#hidChangeShow").each(function () {
|
|
//alert($(this).attr('value'));
|
|
$(this).attr('_value', $(this).val());
|
|
});
|
|
$(".text-user input").each(function () {
|
|
switch (this.type) {
|
|
case 'checkbox':
|
|
if (this.checked) {
|
|
$(this).attr('_value', $(this).val());
|
|
} else { $(this).attr('_value', null); }
|
|
break;
|
|
case 'password':
|
|
$(this).attr('_value', $(this).val());
|
|
break;
|
|
|
|
}
|
|
});
|
|
$(".text-user select").each(function () {
|
|
//alert($(this).attr('_value'));
|
|
|
|
if ($(this).attr("id").indexOf("dr") > -1) {
|
|
//下拉選單
|
|
//alert($(this).attr('_value'));
|
|
if (typeof ($(this).attr('_value')) == 'undefined') {
|
|
$(this).attr('_value', $(this).val());
|
|
}
|
|
else {
|
|
$(this).attr('_value', $(this).attr('_value'));
|
|
}
|
|
$(".text-user").append("<div id=\"div" + this.id + "\" class=\"displayNone\" style=\"position:absolute;top:-999px;left:-999px;\">" + $(this).html() + "</div>"); //add by Gary 2014/06/06 排除連動之dropdownlist問題
|
|
}
|
|
else {
|
|
//ListBox
|
|
var value = "";
|
|
var hidValue = "";
|
|
$(this).find('option').each(function () {
|
|
if ($(this).val() != "") {
|
|
value += $(this).val() + "/" + $(this).text() + "|";
|
|
hidValue += ($(this).val() + "|");
|
|
}
|
|
});
|
|
$(this).attr('_value', value);
|
|
|
|
switch (this.name) {
|
|
case 'lstRight':
|
|
if ((hidValue != "") && (hidValue != null)) {
|
|
$(this).attr('hidValue', hidValue);
|
|
//alert($(this).attr('hidValue') + 555);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
//alert(777);
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnALLClear(element)
|
|
* 目的:清除功能
|
|
* 作者:Jack
|
|
* 時間:2014/06/03
|
|
* 參數說明:主要是用在個頁面的清除功能
|
|
* 目前預設Qry會清除#searchbar裡面的所有物件
|
|
* Upd會清除#text-user裡面的所有物件
|
|
* 若有其他的清除項目則由各Page內增加清除的項目
|
|
* 增加此函數在於避免有些用不到的PAGE忘記加時會出現錯誤
|
|
*********************************************/
|
|
|
|
function fnALLClear(ele) {
|
|
//alert(111);
|
|
|
|
if (ele == undefined || ele == "") {
|
|
ele = ".box-style";
|
|
}
|
|
$(ele).find(':input').each(function () {
|
|
//alert(this.id + ":" + this.type);
|
|
switch (this.type) {
|
|
case 'password':
|
|
$(this).val($(this).attr('_value'));
|
|
break;
|
|
case 'select-multiple':
|
|
case 'select-one':
|
|
if ($(this).attr("id").indexOf("dr") > -1) {
|
|
//下拉選單
|
|
//↓↓↓↓↓add by Gary 2014/06/06 排除連動之dropdownlist問題
|
|
var thisID = this.id;
|
|
$(this).html($("#div" + thisID).html());
|
|
//$(this).val($(this).attr('_value'));
|
|
|
|
//↑↑↑↑↑add by Gary 2014/06/06 排除連動之dropdownlist問題
|
|
|
|
//主要用在“人事資料編輯.行事曆顯示顏色”顏色還原Start
|
|
|
|
try {
|
|
fnColorChange($(this).attr("id"));
|
|
} catch (e) {
|
|
|
|
}
|
|
//主要用在“人事資料編輯.行事曆顯示顏色”顏色還原End
|
|
}
|
|
else {
|
|
//ListBox
|
|
var varid = this.id;
|
|
var strvalue = "";
|
|
var strhidSelAllValue = "";
|
|
strvalue += $(this).attr('_value');
|
|
strhidSelAllValue += $('#lstRight').attr('hidValue');
|
|
$(this).find('option').each(function () {
|
|
$(this).remove();
|
|
});
|
|
arr = strvalue.split("|");
|
|
for (i = 0; i <= arr.length; i++) {
|
|
var valueItemandText = arr[i];
|
|
if (valueItemandText != "" && valueItemandText != null) {
|
|
Array1 = valueItemandText.split("/");
|
|
$(this).append("<option value='" + Array1[0] + "'>" + Array1[1] + "</option>");
|
|
}
|
|
}
|
|
var strId = "#" + $(this).attr('id'); //找到listbox的id
|
|
strId = strId.replace("lst", "hid"); //找到隱藏控件的id
|
|
$(strId).val(strhidSelAllValue); //將串好的值賦給隱藏控件
|
|
}
|
|
break;
|
|
case 'text':
|
|
case 'file':
|
|
case 'textarea':
|
|
$(this).val($(this).attr('_value'));
|
|
try {
|
|
UE.getEditor($(this).attr('id')).setContent(($(this).attr('_value')));
|
|
} catch (e) {
|
|
|
|
}
|
|
break;
|
|
case 'checkbox':
|
|
if ($(this).attr('_value') != null) {
|
|
this.checked = true;
|
|
}
|
|
else {
|
|
this.checked = false;
|
|
}
|
|
break;
|
|
case 'radio':
|
|
this.checked = false;
|
|
$('input[name=\'' + this.name + '\']')[0].checked = true;
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
try {
|
|
/********************************************
|
|
* 函數名稱:
|
|
* 目的:設定jQuery之datepicker為中文語系
|
|
* 作者:Gary
|
|
* 時間:2014/06/16
|
|
*********************************************/
|
|
$.datepicker.regional['zh-TW'] = {
|
|
dayNames: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
|
|
dayNamesMin: ["日", "一", "二", "三", "四", "五", "六"],
|
|
monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
|
monthNamesShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
|
|
prevText: "上月",
|
|
nextText: "次月",
|
|
weekHeader: "週",
|
|
dateFormat: "yy-mm-dd"
|
|
};
|
|
//將預設語系設定為中文
|
|
$.datepicker.setDefaults($.datepicker.regional["zh-TW"]);
|
|
} catch (e) {
|
|
|
|
}
|
|
/********************************************
|
|
* 函數名稱:getPageUrl()
|
|
* 目的:紀錄清除前之值功能
|
|
* 作者:Jack
|
|
* 時間:2014/07/24
|
|
* 參數說明:
|
|
|
|
*********************************************/
|
|
var aryAllPageValue = new Array(); //定義數組arrID
|
|
var aryCurrentPageValue = new Array();
|
|
|
|
function getPageUrl(obj) {
|
|
//if (obj == "Load") {
|
|
// j++;
|
|
//}
|
|
var herf = document.location.href;
|
|
var search = document.location.search;
|
|
var strHerf = herf.replace(search, '').split("/");
|
|
var Url = strHerf[strHerf.length - 1].replace('.aspx', '');
|
|
//alert(Url);
|
|
return Url;
|
|
}
|
|
/********************************************
|
|
* 函數名稱:fnLoadPageSaveArrayValue(element)
|
|
* 目的:紀錄清除前之值功能
|
|
* 作者:Jack
|
|
* 時間:2014/07/24
|
|
* 參數說明:主要是用在個頁面的清除功能
|
|
× ele這個參數是抱在最外層的div的樣式
|
|
* 目前預設Qry會清除#searchbar裡面的所有物件
|
|
* Upd會清除#text-user裡面的所有物件
|
|
* 若有其他的清除項目則由各Page內增加清除的項目
|
|
* 增加此函數在於避免有些用不到的PAGE忘記加時會出現錯誤
|
|
*********************************************/
|
|
function fnLoadPageSaveArrayValue(ele) {
|
|
var strCurrentPageUrl = getPageUrl();
|
|
if (ele == undefined || ele == "") {//判斷傳入的樣式是否不存在或者等於空的情況
|
|
ele = ".box-style"; //該參數是包在最外層的div的樣式,如果不在一個專案中只要調整該樣式即可實現效果
|
|
}
|
|
//1.處理input類型
|
|
$(ele).find(':input').each(function () {
|
|
var ArrayName = new Object(); //實例化對象
|
|
switch (this.type) {
|
|
case 'text':
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "text";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
case 'password':
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "password";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
case 'hidden':
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "hidden";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
case 'checkbox':
|
|
if (this.checked) {
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "checkbox";
|
|
ArrayName.Checked = true;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
} else {
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "checkbox";
|
|
ArrayName.Checked = false;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
}
|
|
case 'radio':
|
|
if (this.checked) {
|
|
ArrayName.ID = $(this).attr("id");
|
|
//if (strCurrentPageUrl.indexOf("Qry") > -1) { //Remove By Gary 2014/10/03 這裡會導致選取的RadioButton 值遺失
|
|
//ArrayName.Value = "";
|
|
//} else {
|
|
ArrayName.Value = $(this).val();
|
|
//}
|
|
ArrayName.Type = "radio";
|
|
ArrayName.Checked = true;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
} else {
|
|
ArrayName.ID = $(this).attr("id");
|
|
//if (strCurrentPageUrl.indexOf("Qry") > -1) { //Remove By Gary 2014/10/03 這裡會導致選取的RadioButton 值遺失
|
|
// ArrayName.Value = "";
|
|
//} else {
|
|
ArrayName.Value = $(this).val();
|
|
//}
|
|
ArrayName.Type = "radio";
|
|
ArrayName.Checked = false;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
}
|
|
}
|
|
});
|
|
//2.處理textarea類型
|
|
$(ele).find("textarea").each(function () {
|
|
var ArrayName = new Object(); //實例化對象
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "textarea";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
});
|
|
//3.1處理select類型
|
|
$(ele).find("select").each(function () {
|
|
var ArrayName = new Object(); //實例化對象
|
|
var strSelectID = $(this).attr("id");
|
|
if ($(this).attr("id").indexOf("dr") > -1) {
|
|
//下拉選單
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "select";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = null;
|
|
aryCurrentPageValue.push(ArrayName);
|
|
$(".box-style").append("<div id=\"div" + this.id + "\" class=\"displayNone\">" + $(this).html() + "</div>"); //add by Gary 2014/06/06 排除連動之dropdownlist問題
|
|
}
|
|
else {
|
|
//3.2處理listBox類型
|
|
$(this).find('option').each(function () {
|
|
var ArrayName = new Object(); //實例化對象
|
|
ArrayName.ID = strSelectID;
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "option";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = $(this).text();
|
|
aryCurrentPageValue.push(ArrayName);
|
|
});
|
|
}
|
|
if ($(this).attr("id").indexOf("lst") > -1) {
|
|
//ListBox
|
|
ArrayName.ID = $(this).attr("id");
|
|
if (strCurrentPageUrl.indexOf("Qry") > -1) {
|
|
ArrayName.Value = "";
|
|
} else {
|
|
ArrayName.Value = $(this).val();
|
|
}
|
|
ArrayName.Type = "select";
|
|
ArrayName.Checked = null;
|
|
ArrayName.text = "";
|
|
aryCurrentPageValue.push(ArrayName);
|
|
}
|
|
});
|
|
aryAllPageValue[strCurrentPageUrl] = aryCurrentPageValue;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnAllPageClear()
|
|
* 目的:紀錄清除前之值功能
|
|
* 作者:Jack
|
|
* 時間:2014/07/24
|
|
* 參數說明:主要是用在個頁面的清除功能
|
|
* 目前預設Qry會清除#searchbar裡面的所有物件
|
|
* Upd會清除#text-user裡面的所有物件
|
|
* 若有其他的清除項目則由各Page內增加清除的項目
|
|
* 增加此函數在於避免有些用不到的PAGE忘記加時會出現錯誤
|
|
*********************************************/
|
|
function fnAllPageClear() {
|
|
var ClearPageName = getPageUrl();
|
|
var arr = new Array();
|
|
var obj = new Object();
|
|
//alert(aryAllPageValue[ClearPageName].length + "....");
|
|
// for (var item in aryAllPageValue) {
|
|
// //alert(ArrayPageName[ClearPageName]);
|
|
// //alert(ClearPageName);
|
|
// arr = ArrayPageName[ClearPageName];
|
|
// break;
|
|
// }
|
|
try {
|
|
$(".Date").datepicker("option", "maxDate", ""); //清除Datepicker的MaxDate Add By Gary 2014/11/27
|
|
$(".Date").datepicker("option", "minDate", ""); //清除Datepicker的MinDate Add By Gary 2014/11/27
|
|
for (var i = 0; i < aryAllPageValue[ClearPageName].length; i++) {
|
|
obj = aryAllPageValue[ClearPageName][i];
|
|
if (obj.Checked != null && obj.Checked == true) {
|
|
$("#" + obj.ID).attr("checked", "checked");
|
|
//$("#" + obj.ID).attr("checked", "true");
|
|
$("#" + obj.ID).checked = true;
|
|
$("#" + obj.ID).prop('checked', true); //Add By Gary 2014/10/03
|
|
} else if (obj.Checked != null && obj.Checked == false) {
|
|
$("#" + obj.ID).removeAttr("checked");
|
|
$("#" + obj.ID).checked = false;
|
|
//$("#" + obj.ID).attr("checked", "false");
|
|
}
|
|
if (obj.Type == "option") {
|
|
$("#" + obj.ID).find('option').each(function () {
|
|
$(this).remove();
|
|
});
|
|
} else {
|
|
$("#" + obj.ID).val(obj.Value);
|
|
}
|
|
}
|
|
//後面這個for循環是對LIstBox特殊處理
|
|
var strOptionID = "";
|
|
for (var i = 0; i < aryAllPageValue[ClearPageName].length; i++) {
|
|
obj = aryAllPageValue[ClearPageName][i];
|
|
if (obj.Type == "option") {
|
|
strOptionID += obj.ID + ";";
|
|
$("#" + obj.ID).append("<option value='" + obj.Value + "'>" + obj.text + "</option>");
|
|
}
|
|
}
|
|
//解決新增進入畫面時LIstBox的問題
|
|
for (var i = 0; i < aryAllPageValue[ClearPageName].length; i++) {
|
|
obj = aryAllPageValue[ClearPageName][i];
|
|
if (obj.Type == "select") {
|
|
if (strOptionID.indexOf(obj.ID) < 0 && obj.ID.indexOf("dr") < 0) {
|
|
$("#" + obj.ID).find('option').each(function () {
|
|
$(this).remove();
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
} catch (e) {
|
|
}
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnALLClear(ele)
|
|
* 目的:百威架構瀏覽頁面清除
|
|
* 作者:Ted
|
|
* 時間:2014/07/31
|
|
* 參數說明:百威結構為.text-user因此要清除就要加此fn 目前更改BasePage
|
|
* 在SetButtonRight()的清除事件JS後加上fnALLClear('.text-user');就能正常清除搜尋區塊
|
|
*********************************************/
|
|
function fnALLClear(ele) {
|
|
if (ele == undefined || ele == "") {
|
|
ele = ".tr2";
|
|
}
|
|
$(ele).find(':input').each(function () {
|
|
//alert(this.id + ":" + this.type);
|
|
switch (this.type) {
|
|
case 'password':
|
|
case 'select-multiple':
|
|
case 'select-one':
|
|
if ($(this).attr("id").indexOf("dr") > -1) {
|
|
//下拉選單
|
|
//↓↓↓↓↓add by Gary 2014/06/06 排除連動之dropdownlist問題
|
|
var thisID = this.id;
|
|
$(this).html($("#div" + thisID).html());
|
|
//$(this).val($(this).attr('_value'));
|
|
|
|
//↑↑↑↑↑add by Gary 2014/06/06 排除連動之dropdownlist問題
|
|
|
|
|
|
//主要用在“人事資料編輯.行事曆顯示顏色”顏色還原Start
|
|
try {
|
|
fnColorChange($(this).attr("id"));
|
|
} catch (e) {
|
|
|
|
}
|
|
//主要用在“人事資料編輯.行事曆顯示顏色”顏色還原End
|
|
}
|
|
else {
|
|
//ListBox
|
|
var varid = this.id;
|
|
var strvalue = "";
|
|
var strhidSelAllValue = "";
|
|
strvalue += $(this).attr('_value');
|
|
strhidSelAllValue += $('#lstRight').attr('hidValue');
|
|
$(this).find('option').each(function () {
|
|
$(this).remove();
|
|
});
|
|
arr = strvalue.split("|");
|
|
for (i = 0; i <= arr.length; i++) {
|
|
var valueItemandText = arr[i];
|
|
if (valueItemandText != "" && valueItemandText != null) {
|
|
Array1 = valueItemandText.split("/");
|
|
$(this).append("<option value='" + Array1[0] + "'>" + Array1[1] + "</option>");
|
|
}
|
|
}
|
|
var strId = "#" + $(this).attr('id'); //找到listbox的id
|
|
strId = strId.replace("lst", "hid"); //找到隱藏控件的id
|
|
$(strId).val(strhidSelAllValue); //將串好的值賦給隱藏控件
|
|
}
|
|
break;
|
|
case 'text':
|
|
case 'file':
|
|
case 'textarea':
|
|
$(this).val($(this).attr('_value'));
|
|
break;
|
|
case 'checkbox':
|
|
if ($(this).attr('_value') != null) {
|
|
this.checked = true;
|
|
}
|
|
else {
|
|
this.checked = false;
|
|
}
|
|
break;
|
|
case 'radio':
|
|
//↓↓↓↓↓add by Gary 2014/07/09 排除radio清除功能不正常問題
|
|
var blChecked = $(this).attr("_value");
|
|
if (blChecked) {
|
|
this.checked = blChecked;
|
|
}
|
|
else {
|
|
$(this).removeAttr("checked");
|
|
}
|
|
//↑↑↑↑↑add by Gary 2014/07/09 排除radio清除功能不正常問題
|
|
// this.checked = false;
|
|
// $('input[name=\'' + this.name + '\']')[0].checked = true;
|
|
break;
|
|
}
|
|
});
|
|
}
|
|
|
|
///********************************************
|
|
//* 屬性名稱:等待遮罩視窗
|
|
//* 目的:顯示Waiting文字
|
|
//* 作者:Ted
|
|
//* 時間:2014/07/31
|
|
//* 參數說明:目前用於Toolbar
|
|
//* 以及GridView 限定 .table-A .table-title th > a
|
|
//*********************************************/
|
|
//function showwaiting() {
|
|
// //工具列單擊時的等待畫面
|
|
// $('*').delegate('[showwaiting]', 'click', function () {
|
|
// $.blockUI({
|
|
// message: $('<div id="Divshowwaiting"><img src="../../App_Themes/Default/images/ajax-loader.gif">Waiting...</div>'),
|
|
// css: {
|
|
// 'font-size': '36px',
|
|
// border: '0px',
|
|
// 'border-radius': '10px',
|
|
// 'background-color': '#FFF',
|
|
// padding: '15px 15px',
|
|
// opacity: .5,
|
|
// color: 'orange',
|
|
// cursor: 'wait'
|
|
// }
|
|
// });
|
|
// window.setTimeout($.unblockUI, 60000);
|
|
// });
|
|
|
|
// //表格雙擊進入編輯畫面時的等待畫面
|
|
// $('tr[class*="tbShowWaiting"]').dblclick(function () {
|
|
// $.blockUI({
|
|
// message: $('<div id="Divshowwaiting"><img src="../../App_Themes/Default/images/ajax-loader.gif">Waiting...</div>'),
|
|
// css: {
|
|
// 'font-size': '36px',
|
|
// border: '0px',
|
|
// 'border-radius': '10px',
|
|
// 'background-color': '#FFF',
|
|
// padding: '15px 15px',
|
|
// opacity: .5,
|
|
// color: 'orange',
|
|
// cursor: 'wait'
|
|
// }
|
|
// });
|
|
// window.setTimeout($.unblockUI, 60000);
|
|
// });
|
|
|
|
// $('.table-A .table-title th > a').each(function () {
|
|
// $(this).click(function () {
|
|
// $.blockUI({
|
|
// message: $('<div id="Divshowwaiting"><img src="../../App_Themes/Default/images/ajax-loader.gif">Waiting...</div>'),
|
|
// css: {
|
|
// 'font-size': '36px',
|
|
// border: '0px',
|
|
// 'border-radius': '10px',
|
|
// 'background-color': '#FFF',
|
|
// padding: '15px 15px',
|
|
// opacity: .5,
|
|
// color: 'orange',
|
|
// cursor: 'wait'
|
|
// }
|
|
// });
|
|
// });
|
|
// });
|
|
//}
|
|
|
|
|
|
function ShowLoading() {
|
|
$.blockUI({
|
|
message: $('<div id="Divshowwaiting"><img src="../../App_Themes/Default/images/ajax-loader.gif">Waiting...</div>'),
|
|
css: {
|
|
'font-size': '36px',
|
|
border: '0px',
|
|
'border-radius': '10px',
|
|
'background-color': '#FFF',
|
|
padding: '15px 15px',
|
|
opacity: .5,
|
|
color: 'orange',
|
|
cursor: 'wait'
|
|
}
|
|
});
|
|
window.setTimeout($.unblockUI, 60000);
|
|
}
|
|
|
|
|
|
|
|
|
|
function pageLoad() {
|
|
//modify by Dean 2014/11/03 配合 COMMON.JS 的固定顯示Showwaiting() 事件
|
|
//需要固定在每一頁
|
|
//setTimeout(function () { showwaiting(); }, 500); //有載入本頁的預設會執行此段程式,作用在於啟動Toolbar的showwaiting功能
|
|
$(document).ready(function () {
|
|
setTimeout($.unblockUI, 30); setTimeout(showwaiting, 500);
|
|
});
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 屬性名稱:攔截鍵盤按鍵
|
|
* 目的:攔截鍵盤按鍵
|
|
* 作者:Ted
|
|
* 時間:2014/07/31
|
|
* 參數說明:目前用於Toolbar
|
|
*********************************************/
|
|
/*攔截查詢頁面Enter事件,設定為執行查詢 Add By Ted 2014/07/31*/
|
|
$(document).keypress(function (e) {
|
|
var code = (e.keyCode ? e.keyCode : e.which);
|
|
var elid = document.activeElement; //抓取當前foucs的Element
|
|
switch (code) {
|
|
case 13:
|
|
//alert($('#Toolbar1_Qry').val
|
|
//當沒有查詢按紐時,Enter按鍵沒功能
|
|
if (elid.tagName.toLowerCase() != 'textarea') {
|
|
$('#Toolbar1_Qry').click();
|
|
return false;
|
|
}
|
|
break;
|
|
|
|
}
|
|
});
|
|
|
|
|
|
$(document).keydown(function (e) {
|
|
var code = (e.keyCode ? e.keyCode : e.which);
|
|
//var elid = $(document.activeElement).attr('type'); //抓取當前foucs的Element
|
|
var elid = document.activeElement; //抓取當前foucs的Element
|
|
//alert(elid.tagName.toLowerCase());
|
|
if ((code == 8) && elid.type != 'text' && elid.type != 'search' && elid.type != 'password' && elid.tagName.toLowerCase() != 'textarea') { /*攔截Backspace事件*/
|
|
return false;
|
|
}
|
|
else if (code == 116) { /*攔截F5事件*/
|
|
return false;
|
|
}
|
|
});
|
|
|
|
|
|
/********************************************
|
|
* 屬性名稱:CheckMobile(str)
|
|
* 目的:驗證台灣地區手機格式
|
|
* 作者:Gary
|
|
* 時間:2014/11/14
|
|
* 參數說明:
|
|
*********************************************/
|
|
function CheckMobile(str) {
|
|
if (str.search(/^(09)\d{8}$/) != -1) {
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:encodeURL(url)
|
|
* 目的:對網址、路徑進行編碼
|
|
* 作者:Ted
|
|
* 時間:2014/11/28
|
|
* 參數說明:
|
|
* url:要編碼的url path
|
|
*********************************************/
|
|
function encodeURL(encodeurl) {
|
|
return encodeURIComponent(encodeurl).replace(/\'/g, "%27").replace(/\!/g, "%21").replace(/\(/g, "%28").replace(/\)/g, "%29");
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:decodeURL(url)
|
|
* 目的:對網址、路徑進行編碼
|
|
* 作者:Ted
|
|
* 時間:2014/11/28
|
|
* 參數說明:
|
|
* url:要解碼的url path
|
|
*********************************************/
|
|
function decodeURL(decodeurl) {
|
|
return decodeURIComponent(decodeurl);
|
|
}
|
|
/********************************************
|
|
* 函數名稱:getUrlParam(name)
|
|
* 目的:取得Url參數
|
|
* 作者:Gary
|
|
* 時間:2014/06/03
|
|
* 參數說明:name:取得部分的名稱 例如輸入"Action",就能取到"Add"之類參數
|
|
*********************************************/
|
|
function getUrlParam(name) {
|
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標參數的正則表達式對象
|
|
var r = window.location.search.substr(1).match(reg); //匹配目標參數
|
|
if (r != null) return unescape(r[2]); return null; //返回參數值
|
|
}
|
|
/********************************************
|
|
* 函數名稱:clearSelection()
|
|
* 目的:取消反白
|
|
* 作者:Gary
|
|
* 時間:2015/01/23
|
|
* 參數說明:
|
|
*********************************************/
|
|
function clearSelection() {
|
|
if (document.selection && document.selection.empty) {
|
|
document.selection.empty();
|
|
} else if (window.getSelection) {
|
|
var sel = window.getSelection();
|
|
sel.removeAllRanges();
|
|
}
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:NumText()
|
|
* 目的:限制只能打數字
|
|
* 作者:Gary
|
|
* 時間:2014/06/03
|
|
* 用法:<input id="txtText" type="text" onkeypress="return NumText()" />
|
|
*********************************************/
|
|
function NumText() {
|
|
var chk = window.event.keyCode
|
|
if ((chk >= 48 && chk <= 57) || chk == 44 || chk == 45) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
var guid = (function () {
|
|
function s4() {
|
|
return Math.floor((1 + Math.random()) * 0x10000)
|
|
.toString(16)
|
|
.substring(1);
|
|
}
|
|
return function () {
|
|
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
|
|
s4() + '-' + s4() + s4() + s4();
|
|
};
|
|
})();
|
|
|
|
/********************************************
|
|
* 函數名稱:.indexOf()
|
|
* 目的:IE9以前沒有indexOf()的效果,所以在此定義,避免使用者版本不同導致錯誤。
|
|
* 作者:Gary
|
|
* 時間:2015/02/05
|
|
* 參數說明:
|
|
*********************************************/
|
|
if (!Array.prototype.indexOf) {
|
|
Array.prototype.indexOf = function (elt /*, from*/) {
|
|
var len = this.length >>> 0;
|
|
|
|
var from = Number(arguments[1]) || 0;
|
|
from = (from < 0)
|
|
? Math.ceil(from)
|
|
: Math.floor(from);
|
|
if (from < 0)
|
|
from += len;
|
|
|
|
for (; from < len; from++) {
|
|
if (from in this &&
|
|
this[from] === elt)
|
|
return from;
|
|
}
|
|
return -1;
|
|
};
|
|
}
|
|
/********************************************
|
|
* 函數名稱:.JSON()
|
|
* 目的:IE8以前沒有JSON()的效果,所以在此定義,避免使用者版本不同導致錯誤。
|
|
* 作者:Gary
|
|
* 時間:2015/02/05
|
|
* 參數說明:
|
|
*********************************************/
|
|
if (typeof (JSON) == 'undefined') { //沒有 JSON 時才讓 browser 下載 json2.js
|
|
$('head').append($("<script type='text/javascript' src='/Js/json2.js'>"));
|
|
}
|
|
/********************************************
|
|
* 函數名稱:.yyyymmdd()
|
|
* 目的:日期取回年月日
|
|
* 作者:Gary
|
|
* 時間:2015/02/05
|
|
* 參數說明:
|
|
*********************************************/
|
|
Date.prototype.yyyymmdd = function () {
|
|
var yyyy = this.getFullYear().toString();
|
|
var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based
|
|
var dd = this.getDate().toString();
|
|
return yyyy + '/' + GetFormatDate(mm) + '/' + GetFormatDate(dd); // padding
|
|
};
|
|
/********************************************
|
|
* 函數名稱: GetFormatDate(InputValue)
|
|
* 目的:格式化將月份和日期的數字補滿兩位數(如果是一位數的話)
|
|
* 作者:Gary
|
|
* 時間:2015/02/04
|
|
* 參數說明:
|
|
*********************************************/
|
|
function GetFormatDate(InputValue) {
|
|
if (InputValue < 10) {
|
|
InputValue = '0' + InputValue;
|
|
}
|
|
return InputValue;
|
|
}
|
|
/********************************************
|
|
* 函數名稱:getObjects(obj, key, val)
|
|
* 目的:Json取回條件內資料
|
|
* 作者:Gary
|
|
* 時間:2015/02/03
|
|
* 參數說明:
|
|
*********************************************/
|
|
function getObjects(obj, key, val) {
|
|
var objects = [];
|
|
for (var i in obj) {
|
|
if (!obj.hasOwnProperty(i)) continue;
|
|
if (typeof obj[i] == 'object') {
|
|
objects = objects.concat(getObjects(obj[i], key, val));
|
|
} else if (i == key && obj[key] == val) {
|
|
objects.push(obj);
|
|
}
|
|
}
|
|
return objects;
|
|
}
|
|
/********************************************
|
|
* 函數名稱:daydiff(first, second)
|
|
* 目的:兩日期相減,回傳相差天數
|
|
* 作者:Gary
|
|
* 時間:2015/02/04
|
|
* 參數說明:
|
|
*********************************************/
|
|
function daydiff(first, second) {
|
|
return (second - first) / (1000 * 60 * 60 * 24);
|
|
}
|
|
/********************************************
|
|
* 方法名稱:MoneyFormatByString(strMoney)
|
|
* 目的:金額添加三位一撇
|
|
* 作者:Gary
|
|
* 時間:2014/12/25
|
|
* 參數說明:
|
|
*********************************************/
|
|
function MoneyFormatByString(strMoney) {
|
|
if (strMoney) {
|
|
strMoney = strMoney.toString();
|
|
strMoney = strMoney.replace(/,/g, '');
|
|
strMoney = strMoney.replace(/\d+?(?=(?:\d{3})+$)/g, function (s) {
|
|
return s + ',';
|
|
});
|
|
}
|
|
return strMoney;
|
|
}
|
|
/********************************************
|
|
* 名稱:BackTop()
|
|
* 目的:回最上層
|
|
* 作者:John
|
|
* 時間:2015/03/31
|
|
* 參數說明:
|
|
*********************************************/
|
|
function BackTop() {
|
|
if ($('#DivTop').html() === undefined) {
|
|
var ThisFormID = $('form').attr('id');
|
|
var htmldiv = "<div style='position: fixed; bottom: 5%; right: 1%; z-index: 999;' runat='server' id='DivTop'><a href='#" + ThisFormID + "' style='background-image: url(../../App_Themes/Default/images/top.png); background-repeat: no-repeat; background-position: -243px -45px; padding: 20px 27px 15px 26px;'></a> </div>";
|
|
$('#' + ThisFormID).append(htmldiv);
|
|
$('#DivTop').attr('class', 'displayNone');
|
|
$(window).bind('scroll', function () {
|
|
//為頁面添加頁面滾動監聽事件
|
|
var wst = $(window).scrollTop() //滾動條距離頂部的值
|
|
wst < 20 ? $('#DivTop').attr('class', 'displayNone') : $('#DivTop').removeAttr('class');
|
|
//windowstop = $('table[id^=gv]').offset().top - wst;
|
|
//$('#btnLeave').val() == '顯示' ? windowstop = $('table[id^=gv]').offset().top - wst + 35 + $("#searchbar").height() : windowstop = $('table[id^=gv]').offset().top - wst;
|
|
});
|
|
//添加置頂控件
|
|
|
|
// $("a[href*=#]").click(function () {
|
|
// $("html, body").animate({
|
|
// scrollTop: $($(this).attr("href")).offset().top + "px"
|
|
// }, {
|
|
// duration: 500,
|
|
// easing: "swing"
|
|
// });
|
|
// return false;
|
|
// });
|
|
try {
|
|
$("a[href*=#]").click(function () {
|
|
var strscrollTop = '';
|
|
($($(this).attr("href")).offset() != undefined && $($(this).attr("href")).offset() != null) ? strscrollTop = $($(this).attr("href")).offset().top + "px" : strscrollTop = '0px';
|
|
if (strscrollTop != "0px") {
|
|
$("html, body").animate({
|
|
scrollTop: strscrollTop
|
|
}, {
|
|
duration: 500,
|
|
easing: "swing"
|
|
});
|
|
return false;
|
|
}
|
|
});
|
|
} catch (e) {
|
|
|
|
}
|
|
}
|
|
}
|
|
/********************************************
|
|
* 名稱:replaceAll()
|
|
* 目的:取代所有
|
|
* 作者:Gary
|
|
* 時間:2015/05/21
|
|
* 參數說明:
|
|
*********************************************/
|
|
String.prototype.replaceAll = stringReplaceAll;
|
|
function stringReplaceAll(AFindText, ARepText) {
|
|
var raRegExp = new RegExp(AFindText.replace(/([\(\)\[\]\{\}\^\$\+\-\*\?\.\"\'\|\/\\])/g, "\\$1"), "ig");
|
|
return this.replace(raRegExp, ARepText);
|
|
}
|
|
/********************************************
|
|
* 名稱:BirthDayToAge(BirthDay)
|
|
* 目的:生日轉年齡
|
|
* 作者:Gary
|
|
* 時間:2015/05/21
|
|
* 參數說明:
|
|
*********************************************/
|
|
function BirthDayToAge(BirthDay) {
|
|
var cha = ((Date.parse(new Date().yyyymmdd()) - Date.parse(BirthDay)) / 86400000 / 365);
|
|
var age = Math.abs(cha) + 1 + "";
|
|
return age.split(".")[0];
|
|
}
|
|
|
|
|
|
; (function ($) {
|
|
|
|
var Method = {
|
|
GetList: 'GetList',
|
|
SetSession: 'SetSession',
|
|
GetSession: 'GetSession'
|
|
};
|
|
|
|
var JSON_Sort = {
|
|
sort: 'asc'
|
|
};
|
|
|
|
|
|
var GridViewSettingOption = {
|
|
AjaxUrl: '../../../WS/OTKGridView.asmx/',
|
|
method: 'GetGridViewSetting',
|
|
table_name: '',
|
|
limit_count: ''
|
|
};
|
|
|
|
var Json = {
|
|
List: {},
|
|
Session: {}
|
|
};
|
|
|
|
|
|
$.fn.OTKGridViewSetting = function (para) {
|
|
var GridView = this;
|
|
var setting = $.extend('', para);
|
|
var PageTag = $(setting.PageTag).val();
|
|
var PageName = $(setting.PageName).val();
|
|
|
|
/********************************************
|
|
* 函數名稱:CallPageMethod(UrlAspx, MethodName, JsonData)
|
|
* 目的:使用Ajax呼叫後台Method
|
|
* 作者:Gary
|
|
* 時間:2015/02/05
|
|
*********************************************/
|
|
var CallPageMethod = function (UrlAspx, MethodName, Data, callback) {
|
|
$.ajax({
|
|
type: 'Post',
|
|
url: UrlAspx + MethodName,
|
|
data: JSON.stringify(Data), //傳送區域參數
|
|
contentType: 'application/json; charset=utf-8',
|
|
dataType: 'json',
|
|
beforeSend: function () {
|
|
ShowLoading();
|
|
},
|
|
success: function (msg) {
|
|
if (typeof callback !== 'function') return;
|
|
callback(msg);
|
|
}, error: function (res, status) {
|
|
if (status === "error") {
|
|
var errorMessage = $.parseJSON(res.responseText);
|
|
console.log(errorMessage.Message);
|
|
}
|
|
}, complete: function () {
|
|
window.setTimeout($.unblockUI, 0);
|
|
}
|
|
});
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱: SetListToTable(Json)
|
|
* 目的:Json資料建入Table
|
|
* 作者:Gary
|
|
* 時間:2015/05/20
|
|
* 參數說明:
|
|
*********************************************/
|
|
var SetListToTable = function (ObjJson, callback) {
|
|
callback = callback || false;
|
|
var a_sort = $('a[selected="selected"]');
|
|
var sort_type = a_sort.attr('sorttype') || JSON_Sort.sort || '';
|
|
var sorting = a_sort.attr('sorting') || 'asc';
|
|
var ShowColumn = '';
|
|
var ColumnWidth = '';
|
|
var ColumnAlign = '';
|
|
var str_field = $('#str_field').html();
|
|
var str_fieldName = $('#str_fieldName').html();
|
|
var str_column = $('#str_column').html();
|
|
var str_columnAlign = $('#str_align').html();
|
|
$.each(str_field.split('|'), function (index, value) {
|
|
ShowColumn += '\"' + str_field.split('|')[index] + '\":\"' + str_fieldName.split('|')[index] + '\",';
|
|
ColumnWidth += '\"' + str_field.split('|')[index] + '\":\"' + str_column.split('|')[index] + '\",';
|
|
ColumnAlign += '\"' + str_field.split('|')[index] + '\":\"' + str_columnAlign.split('|')[index] + '\",';
|
|
});
|
|
ShowColumn = $.parseJSON('{' + ShowColumn.slice(0, -1) + '}');
|
|
ColumnWidth = $.parseJSON('{' + ColumnWidth.slice(0, -1) + '}');
|
|
ColumnAlign = $.parseJSON('{' + ColumnAlign.slice(0, -1) + '}');
|
|
GridViewSettingOption.ColumnAlign = ColumnAlign;
|
|
//var ShowColumn = { '0': '編號', '1': '身份證字號', 'CNM': '姓名', 'SEX': '性別', 'BRTH_DT': '生日', 'Phone': '聯絡電話', 'STUS_CD': '往來' }
|
|
//var ColumnWidth = { 'PAX_CD': '10%', 'ID_NO': '15%', 'CNM': '15%', 'SEX': '5%', 'BRTH_DT': '15%', 'BRTH_DT': '10%', 'Phone': '20%', 'STUS_CD': '10%' };
|
|
$(GridView).OTKGridView({
|
|
dataset: {
|
|
source: ObjJson
|
|
, sorts: $.parseJSON('{\"' + sort_type + '\":\"' + sorting + '\"}')
|
|
, ShowColumn: ShowColumn
|
|
, key: [sort_type]
|
|
},
|
|
BaseSet: {
|
|
HeaderClass: 'table-title'
|
|
},
|
|
writers: {
|
|
_CreateInfo: setting.CreateInfo ? CustomerCreateInfo : {}
|
|
},
|
|
table: {
|
|
ColumnWidth: ColumnWidth,
|
|
ColumnAlign: ColumnAlign
|
|
}
|
|
}, callback);
|
|
//Complete(); //綁定自定義事件
|
|
//有Session值還原頁面設定
|
|
if (Json.Session) {
|
|
var Sortting = (Json.Session['Sortting'] == 'desc') ? 'asc' : 'desc';
|
|
var Page = (Json.Session['Page']) ? Json.Session['Page'] : 1;
|
|
$('#txtSearch').val(Json.Session['Search']).next().click();
|
|
var $a = $('a[sorttype=' + Json.Session['Sorttype'] + ']');
|
|
$a.attr('selected', 'selected');
|
|
$a.attr('sorting', Sortting).click();
|
|
$('#a' + Page).click();
|
|
}
|
|
};
|
|
|
|
/********************************************
|
|
* 函數名稱: CustomerCreateInfo(JObj)
|
|
* 目的:自定義表格事件
|
|
* 作者:Ted
|
|
* 時間:2015/06/08
|
|
* 參數說明:
|
|
* JObj:物件相關資料
|
|
*********************************************/
|
|
var CustomerCreateInfo = function (JObj) {
|
|
var objHeader = $(GridView).find('tr:first');
|
|
var $Tr = $('<tr />');
|
|
objHeader.children().each(function (index, value) {
|
|
var strDataField = $(this).attr('DataField');
|
|
var $Td;
|
|
var align = GridViewSettingOption.ColumnAlign[strDataField] || '';
|
|
$Td = $('<td />', { 'text': JObj[strDataField], 'align': (align || 'center') });
|
|
$Tr.append($Td);
|
|
});
|
|
$(GridView).append($Tr);
|
|
$.each(setting.DataRowBound, function (index, table_setting) {
|
|
if (table_setting.element && table_setting.event) {
|
|
if ($Tr[0].nodeName.toLowerCase() === table_setting.element.toLowerCase()) {
|
|
$Tr.bind(table_setting.event, function () {
|
|
if (table_setting.session) {
|
|
SetOrGetSession('SetSession', {
|
|
strKey: PageTag + '_Qry_Param',
|
|
strJObj: JSON.stringify(GetState())
|
|
}, {});
|
|
}
|
|
table_setting.dothing(this, JObj);
|
|
});
|
|
}
|
|
}
|
|
else {
|
|
$Tr.find(table_setting.element).bind(table_setting.event, function () {
|
|
if (table_setting.session) {
|
|
SetOrGetSession('SetSession', {
|
|
strKey: PageTag + '_Qry_Param',
|
|
strJObj: JSON.stringify(GetState())
|
|
}, {});
|
|
}
|
|
table_setting.dothing(this, JObj);
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱: GetSessionDone(msg)
|
|
* 目的:當GetSession完成後,做的事情。
|
|
* 作者:Gary
|
|
* 時間:2015/05/20
|
|
* 參數說明:
|
|
*********************************************/
|
|
var GetGridViewSettingDone = function (msg) {
|
|
var JSON_Setting = JSON.parse(msg.d)[0];
|
|
if (JSON_Setting) {
|
|
if (JSON_Setting.GridSetting && (JSON_Setting.GridSetting || '|').split('|').length >= 5) $.extend(JSON_Sort, { sort: JSON_Setting.GridSetting.split('|')[4] });
|
|
var grid = $(GridView).find('.OTKGridViewSetting');
|
|
if (grid.length < 1) {
|
|
//頁面中沒找到先產生
|
|
grid = $('<div />').addClass('OTKGridViewSetting').css('display', 'none');
|
|
}
|
|
var str_setting = $('<div />', { 'id': 'str_setting' }).html(JSON_Setting.GridSetting); //表格基本設定
|
|
var str_field = $('<div />', { 'id': 'str_field' }).html(JSON_Setting.DataField); //欄位名稱
|
|
var str_fieldName = $('<div />', { 'id': 'str_fieldName' }).html(JSON_Setting.FieldName); //欄位中文名稱
|
|
var str_queryType = $('<div />', { 'id': 'str_queryType' }).html(JSON_Setting.QueryType); //查詢型態
|
|
var str_sort_order = $('<div />', { 'id': 'str_sort_order' }).html(JSON_Setting.sort_Order); //排序順序
|
|
var str_sort = $('<div />', { 'id': 'str_sort' }).html(JSON_Setting.sort); //排序欄位名稱
|
|
var str_column = $('<div />', { 'id': 'str_column' }).html(JSON_Setting.columnWidth); //欄位寬度
|
|
var str_align = $('<div />', { 'id': 'str_align' }).html(JSON_Setting.columnAlign); //欄位對齊
|
|
var str_type = $('<div />', { 'id': 'str_type' }).html(JSON_Setting.Type); //類型
|
|
grid.html('').append(str_setting, str_field, str_fieldName, str_queryType, str_sort_order, str_sort, str_column, str_align, str_type).appendTo(document.body);
|
|
GridViewSettingOption.table_name = JSON_Setting.TableName || '';
|
|
GridViewSettingOption.limit_count = JSON_Setting.limitCount || '0';
|
|
SetOrGetSession(Method.GetSession, { strKey: PageTag + '_Qry_Param' }, GetSessionDone);
|
|
|
|
|
|
//產生Searchbar Start
|
|
if (setting.SearchBar && $(setting.SearchBar).length) {
|
|
|
|
var SearchBar = $(setting.SearchBar);
|
|
var SearchSetting = '';
|
|
|
|
$.each(JSON_Setting.QueryField.split('|'), function (i, v) {
|
|
if (v) {
|
|
SearchSetting += '\"' + v + '\":{\"FieldName\":\"' + SplitStringToArray('|', JSON_Setting.QueryName, i) + '\",\"QueryType\":\"' + SplitStringToArray('|', JSON_Setting.QueryType, i) + '\",\"QueryDefault\":\"' + SplitStringToArray('|', JSON_Setting.QueryDefault, i) + '\",\"QueryWidth\":\"' + SplitStringToArray('|', JSON_Setting.QueryWidth, i) + '\"},';
|
|
}
|
|
});
|
|
|
|
|
|
if (SearchSetting) {
|
|
SearchSetting = $.parseJSON('{' + SearchSetting.slice(0, -1) + '}');
|
|
for (item in SearchSetting) {
|
|
var $lbl = $('<lable />');
|
|
var $span = $('<span />').text((SearchSetting[item].FieldName || item) + ':').appendTo($lbl);
|
|
var $input = $('<input />');
|
|
var First_Type = SearchSetting[item].QueryType.substring(0, 1);
|
|
switch (First_Type.toLowerCase()) {
|
|
case 'd':
|
|
$input.attr({
|
|
'type': 'text',
|
|
'value': SearchSetting[item].QueryDefault || '',
|
|
'class': 'w' + SearchSetting[item].QueryWidth + ' Date',
|
|
'name': item
|
|
})
|
|
break;
|
|
case 'r':
|
|
$.each(SearchSetting[item].QueryDefault.split(';'), function (index, value) {
|
|
$input.hide();
|
|
var $lbl_item = $('<label />').text(value.split('@')[1]).appendTo($lbl);
|
|
var $input_radio = $('<input type=\"radio\" />').attr({
|
|
'name': item,
|
|
'value': value.split('@')[0]
|
|
}).prependTo($lbl_item);
|
|
});
|
|
break;
|
|
case 'c':
|
|
break;
|
|
case 't':
|
|
default:
|
|
$input.attr({
|
|
'type': 'text',
|
|
'value': SearchSetting[item].QueryDefault || '',
|
|
'class': 'w' + SearchSetting[item].QueryWidth,
|
|
'name': item
|
|
})
|
|
break;
|
|
|
|
|
|
|
|
};
|
|
$lbl.append($input).appendTo(SearchBar);
|
|
}
|
|
|
|
}
|
|
}
|
|
//產生Searchbar End
|
|
}
|
|
};
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱: GetSessionDone(msg)
|
|
* 目的:當GetSession完成後,做的事情。
|
|
* 作者:Gary
|
|
* 時間:2015/05/20
|
|
* 參數說明:
|
|
*********************************************/
|
|
var GetSessionDone = function (msg) {
|
|
Json.Session = JSON.parse(msg.d);
|
|
var Search_List = {
|
|
Tb_Name: GridViewSettingOption.table_name,
|
|
limitCount: GridViewSettingOption.limit_count
|
|
};
|
|
CallPageMethod(GridViewSettingOption.AjaxUrl, Method.GetList, Search_List, GetListDone); //頁面載入預設沒有條件輸入
|
|
};
|
|
|
|
/********************************************
|
|
* 函數名稱: GetListDone(msg)
|
|
* 目的:當GetList完成後,做的事情。
|
|
* 作者:Gary
|
|
* 時間:2015/05/20
|
|
* 參數說明:
|
|
*********************************************/
|
|
var GetListDone = function (msg) {
|
|
Json.List = JSON.parse(msg.d);
|
|
SetListToTable(Json.List);
|
|
};
|
|
|
|
/********************************************
|
|
* 函數名稱: GetState()
|
|
* 目的:取得Session所要存取的值
|
|
* 作者:Gary
|
|
* 時間:2015/02/25
|
|
*********************************************/
|
|
var GetState = function () {
|
|
var State = {
|
|
Search: $('#txtSearch').val(), //搜尋區塊
|
|
Page: $('#txtGoPage').val(), //當前頁數
|
|
Sortting: $('a[selected=selected]').attr('sorting'), //排序狀態 asc or desc
|
|
Sorttype: $('a[selected=selected]').attr('sorttype') //排序的欄位
|
|
}
|
|
return State;
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:CallPageMethod(UrlAspx, MethodName, JsonData)
|
|
* 目的:使用Ajax呼叫後台Method
|
|
* 作者:Gary
|
|
* 時間:2015/02/05
|
|
*********************************************/
|
|
var SetOrGetSession = function (MethodName, Data, callback) {
|
|
$.ajax({
|
|
type: 'Post',
|
|
url: '../../../WS/OTKGridView.asmx/' + MethodName,
|
|
data: JSON.stringify(Data), //傳送區域參數
|
|
contentType: 'application/json; charset=utf-8',
|
|
dataType: 'json',
|
|
success: function (msg) {
|
|
if (!callback) return;
|
|
try {
|
|
callback(msg);
|
|
} catch (e) {
|
|
|
|
}
|
|
|
|
|
|
}, error: function (res, status) {
|
|
if (status === "error") {
|
|
var errorMessage = $.parseJSON(res.responseText);
|
|
console.log(errorMessage.Message);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱: SplitStringToArray(splitstring, str_array, sel_index)
|
|
* 目的:字串分割成陣列並搜尋符合項目
|
|
* 作者:Ted
|
|
* 時間:2015/06/09
|
|
* 參數說明:
|
|
* splitstring:分割字串
|
|
* str_array:要分割成陣列的字串
|
|
* sel_index:選擇索引值
|
|
*********************************************/
|
|
var SplitStringToArray = function (splitstring, str_array, sel_index) {
|
|
var result = '';
|
|
if (splitstring && str_array) {
|
|
if (str_array.indexOf(splitstring) > -1) {
|
|
result = str_array.split(splitstring);
|
|
if (sel_index <= result.length) result = str_array.split(splitstring)[sel_index];
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
//if(typeof setting.CustomerSearch === 'function') setting.CustomerSearch(setting, Method, SetListToTable, CallPageMethod); //綁定自訂義搜尋
|
|
if (PageName) {
|
|
//取得資料表相關設定
|
|
CallPageMethod(GridViewSettingOption.AjaxUrl, GridViewSettingOption.method, { PageName: PageName }, GetGridViewSettingDone);
|
|
}
|
|
};
|
|
})(jQuery);
|
|
|
|
/********************************************
|
|
* 函數名稱:.clean(deleteValue)
|
|
* 目的:刪除陣列內包含deleteValue資料。
|
|
* 作者:Gary
|
|
* 時間:2015/06/02
|
|
* 參數說明:
|
|
*********************************************/
|
|
Array.prototype.clean = function (deleteValue) {
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (this[i] == deleteValue) {
|
|
this.splice(i, 1);
|
|
i--;
|
|
}
|
|
}
|
|
return this;
|
|
};
|
|
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:___CloseWaitingForm(intSleep)
|
|
* 目的:關閉Waiting視窗事件
|
|
* 作者:Ethan
|
|
* 時間:2014/11/07
|
|
* 參數說明:intSleep:延遲時間,單位為毫秒
|
|
*********************************************/
|
|
function ___CloseWaitingForm(intSleep) {
|
|
$(function () {
|
|
if (intSleep == undefined) {
|
|
intSleep = 100;
|
|
}
|
|
setTimeout($.unblockUI, intSleep);
|
|
});
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:fnShowWaitingDiv(strTag)
|
|
* 目的:開啟Waiting視窗
|
|
* 作者:Ethan
|
|
* 時間:2014/11/07
|
|
* 參數說明:strTag:暫時無用
|
|
*********************************************/
|
|
function fnShowWaitingDiv(strTag) {
|
|
$.blockUI({
|
|
message: $('<div id="Divshowwaiting"><img src="../../App_Themes/Default/images/ajax-loader.gif">Waiting...</div>'),
|
|
css: {
|
|
'font-size': '36px',
|
|
border: '0px',
|
|
'border-radius': '10px',
|
|
'background-color': '#FFF',
|
|
padding: '15px 15px',
|
|
opacity: .5,
|
|
color: 'orange',
|
|
cursor: 'wait'
|
|
}
|
|
});
|
|
window.setTimeout($.unblockUI, 30000); //預設開啟30秒後關閉
|
|
}
|
|
|
|
/********************************************
|
|
* 函數名稱:showwaiting()
|
|
* 目的:為指定控件添加開啟Waiting視窗事件
|
|
* 作者:Ted
|
|
* 時間:2014/07/31
|
|
* 參數說明:目前用於Toolbar以及GridView 限定 .table-A .table-title th > a
|
|
*********************************************/
|
|
function showwaiting() {
|
|
//工具列單擊時的等待畫面
|
|
$('[showwaiting]').click(function () {
|
|
fnShowWaitingDiv();
|
|
});
|
|
|
|
//表格雙擊進入編輯畫面時的等待畫面
|
|
$('tr[class*="tbShowWaiting"]').dblclick(function () {
|
|
window.setTimeout(fnShowWaitingDiv(), 10);
|
|
});
|
|
if ($('#Pager_btn') != undefined) {
|
|
$('#Pager_btn').attr('onclick', 'fnShowWaitingDiv();');
|
|
}
|
|
if ($('#btnQry') != undefined) {
|
|
$('#btnQry').click(function () {
|
|
window.setTimeout(fnShowWaitingDiv(), 10);
|
|
});
|
|
}
|
|
//排序用
|
|
$('.table-A .table-title th > a').each(function () {
|
|
$(this).click(function () {
|
|
window.setTimeout(fnShowWaitingDiv(), 10);
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
/********************************************
|
|
* 函數名稱:fnCheckStr()
|
|
* 目的:驗證必須是數字和符號
|
|
* 作者:John
|
|
* 時間:2013/11/03
|
|
* 參數說明:無
|
|
*********************************************/
|
|
function fnCheckStr(obj) {
|
|
var pattern = "()()-+0123456789";
|
|
var rs = "";
|
|
for (var i = 0; i < obj.value.length; i++) {
|
|
if (pattern.indexOf(obj.value.substr(i, 1)) > -1) {
|
|
rs = rs + obj.value.substr(i, 1);
|
|
}
|
|
}
|
|
if (obj.value != rs) {
|
|
obj.value = rs;
|
|
}
|
|
}
|