var JScriptLib = {
/**
*異步請求
*rMethod 訪問方式 get or post
*POST方式可以發送4MB數據 GET方式只能發送256KB數據
*請求帶有參數用POST方式,POST方式將參數放置在頁面的隱藏控件內
*沒有參數使用GET方式
*對於請求的頁面在中途可能發生更改的,也最好用POST方式,用GET方式可能會拿不到最新的信息
*rAsync 是否爲異步 true or false
*rUrl 請求地址
*rEncoding: application/x-www-form-urlencoded or application/json;charset=UTF-8
*rParam 發送參數
*callMethod 回調函數
*/
ajax: function(rMethod, rAsync, rUrl, rEncoding, rParam, callMethod) {
xmlHttp: NaN;
//判斷瀏覽器
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); //非IE
} else {
xmlHttp = NaN;
}
xmlHttp.open(rMethod, rUrl, rAsyn);
xmlHttp.onreadystatechange = function() {
//判斷狀態
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
callMethod(xmlHttp.responseText);
}
}
//定義傳輸的文件HTTP頭信息
xmlHttp.setRequestHeader("Content-Type", rEncoding); //採用的編碼方式
xmlHttp.send(rParam);
},
/**
*獲取document中elements對象 不考慮空格
*obj document中elements標識 id name tagname(標籤名稱)
*cmd 0 id 1 name 2 tagname
*當0 返回唯一對象 當1、2 返回集合 否則返回FALSE
*/
$: function(obj, cmd) {
var temp;
switch (cmd) {
case 0: //id
temp = document.getElementById(obj);
break;
case 1: //name
temp = document.getElementsByName(obj);
break;
case 2: //tagname
temp = document.getElementsByTagName(objtagname);
break;
default:
temp = false;
break;
}
return temp;
},
/**
*字符串左右空格過濾
*str 字符串
*direct 0 全部 1 左邊 2右邊 3 左右兩邊
*返回過濾後的字符串
*/
trim: function(str, direct) {
var temp = "";
switch (direct) {
case 0: //全部
temp = str.replace(/\s+/g, "");
break;
case 1: //左邊
temp = str.replace(/(^\s*)/g, "");
break;
case 2: //右邊
temp = str.replace(/(\s*$)/g, "");
break;
case 3: //左右兩邊
temp = str.replace(/(^\s*)|(\s*$)/g, "");
break;
default:
temp = str;
break;
}
return temp;
},
/**
*判斷是否爲空 不考慮空格
*str 對象任何類型
*/
empty: function(str) {
switch (typeof (str)) {
case 'string':
return str.length == 0 ? true : false;
break;
case 'number':
return str == 0;
break;
case 'object':
return str == null;
break;
case 'array':
return str.length == 0;
break;
default:
return true;
}
},
/**
*判斷值是否是int
*int true 否則FALSE
*/
isInt: function(intvar) {
if (intvar == "") {
return false;
}
reg = /\D+/;
return !reg.test(intvar);
},
/**
*判斷值是否是數據類型
*number true 否則FALSE
*/
isNumber: function(numval) {
reg = /^[\d|\.|,]+$/;
return reg.test(numval);
},
/**
*判斷值是否是時間類型
*time true 否則FALSE
*/
isTime: function(timeval) {
reg = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/;
return reg.test(timeval);
},
/**
* 當前鼠標X座標
*/
mouseX: function(e) {
return Browser.isIE ? event.x + document.documentElement.scrollLeft - 2 : e.pageX;
},
/**
*
*/
request: function(url, item) {
sValue = url.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
return sValue ? sValue[1] : sValue;
},
/**
*當前鼠標Y座標
*/
mouseY: function(e) {
return Browser.isIE ? event.y + document.documentElement.scrollTop - 2 : e.pageY;
},
/**
*判斷傳入的兩個值是否相等 不考慮空格
*obj1、obj2 兩個值 可以是任何類型的值
*相等返回true 否則FALSE
*/
equal: function(obj1, obj2) {
return obj1 == obj2 ? true : false;
},
/**
*格式驗證 不考慮空格
*str 要驗證的字符串
*驗證選擇 0郵箱 1手機號 2家庭電話 3郵編 4簡單身份證
*返回true 驗證通過 FALSE驗證失敗
*/
regularValidator: function(str, cmd) {
reg = "";
switch (cmd) {
case 0: //郵箱
reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
break;
case 1: //手機號
reg = /^(13[0-9]{9})|(15[89][0-9]{8})$/
break;
case 2: //家庭電話
reg = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
break;
case 3: //郵編
reg = /^[1-9][0-9]{5}$/;
break;
case 4: //身份證
reg = /^(\d{18,18}|\d{15,15}|\d{17,17}x)$/;
break;
default:
return false;
}
return reg.test(str);
},
/**
*驗證身份證格式
*str 要驗證的身份證號
*返回 字符串結果
*/
validatorIdCard: function(str) {
temp = "";
idcard = str;
Errors = new Array("驗證通過!", "身份證號碼位數不對!", "身份證號碼出生日期超出範圍或含有非法字符!",
"身份證號碼校驗錯誤!", "身份證地區非法!");
area = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "內蒙古", 21: "遼寧", 22: "吉林", 23: "黑龍江", 31: "上海",
32: "江蘇", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山東", 41: "河南", 42: "湖北", 43: "湖南", 44: "廣東",
45: "廣西", 46: "海南", 50: "重慶", 51: "四川", 52: "貴州", 53: "雲南", 54: "西藏", 61: "陝西", 62: "甘肅", 63: "青海",
64: "寧夏", 65: "新疆", 71: "臺灣", 81: "香港", 82: "澳門", 91: "國外"
}
idcard, Y, JYM;
S, M;
idcard_array = new Array();
idcard_array = idcard.split("");
if (area[parseInt(idcard.substr(0, 2))] == null) temp = Errors[4];
switch (idcard.length) {
case 15:
if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}$/; //測試出生日期的合法性
} else {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2] [0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; //測試出生日期的合法性
}
if (ereg.test(idcard))
temp = Errors[0];
else
temp = Errors[2];
break;
case 18:
if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}[0-9Xx]$/; //閏年出生日期的合法性正則表達式
} else {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2] [0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/; //平年出生日期的合法性正則表達式
}
if (ereg.test(idcard)) {
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
(parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
(parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
(parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 +
parseInt(idcard_array[9]) * 3;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y, 1);
if (M == idcard_array[17])
temp = Errors[0];
else
temp = Errors[3];
} else
temp = Errors[2];
break;
default:
temp = Errors[1];
break;
}
return temp;
},
/**
*編碼
*/
htmlEncode: function(str) {
div = document.createElement("div");
text = document.createTextNode(str);
div.appendChild(text);
return div.innerHTML;
},
/**
*解碼
*/
htmlDecode: function(str) {
div = document.createElement("div");
div.innerHTML = str;
return div.innerHTML;
},
/*
*獲取cookie
*decodeURIComponent() 函數可對 encodeURIComponent() 函數編碼的 URI 進行解碼
*/
getCookie: function(check_name) {
// first we'll split this cookie up into name/value pairs
// note: document.cookie only returns name=value, not the other components
var a_all_cookies = document.cookie.split(';');
var a_temp_cookie = '';
var cookie_name = '';
var cookie_value = '';
var b_cookie_found = false; // set boolean t/f default f
for (i = 0; i < a_all_cookies.length; i++) {
// now we'll split apart each name=value pair
a_temp_cookie = a_all_cookies[i].split('=');
// and trim left/right whitespace while we're at it
cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
// if the extracted name matches passed check_name
if (cookie_name == check_name) {
b_cookie_found = true;
// we need to handle case where cookie has no value but exists (no = sign, that is):
if (a_temp_cookie.length > 1) {
cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
}
// note that in cases where cookie is initialized but no value, null is returned
return cookie_value;
break;
}
a_temp_cookie = null;
cookie_name = '';
}
if (!b_cookie_found) {
return null;
}
},
/*
*設置cookie
*/
setCookie: function(name, value, expires, path, domain, secure) {
// set time, it's in milliseconds
var today = new Date();
today.setTime(today.getTime());
/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if (expires) {
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date(today.getTime() + (expires));
document.cookie = name + "=" + escape(value) +
((expires) ? ";expires=" + expires_date.toGMTString() : "") +
((path) ? ";path=" + path : "") +
((domain) ? ";domain=" + domain : "") +
((secure) ? ";secure" : "");
},
/*
*刪除cookie
*/
removeCookie: function(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + "="
+ ((path) ? ";path=" + path : "")
+ ((domain) ? ";domain=" + domain : "")
+ ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
},
/*
*獲取元素起點
*/
getPosition: function(o) {
var t = o.offsetTop;
var l = o.offsetLeft;
while (o = o.offsetParent) {
t += o.offsetTop;
l += o.offsetLeft;
}
var pos = { top: t, left: l };
return pos;
},
/*
*處理整個HTML文檔
*/
cleanWhitespace1: function(element) {
//如果不提供參數,則處理整個HTML文檔
element = element || document;
//使用第一個子節點作爲開始指針
var cur = element.firstChild;
//臨時變量用來保存當前節點的下個節點
var tmp;
//一直到沒有子節點爲止
while (cur != null) {
//保存當前節點的下個節點
tmp = cur.nextSibling
//如果節點爲文本節點,應且包含空格
if (cur.nodeType == 3 && !/\S/.test(cur.nodeValue)) {
//刪除這個文本節點
element.removeChild(cur);
//否則,它就是一個元素
} else if (cur.nodeType == 1) {
//遞歸整個文檔
cleanWhitespace(cur);
}
cur = tmp; //遍歷子節點
}
},
/*
*清除本節點的空白,不遍歷子節點
*/
cleanWhitespace: function(element) {
var element = element;
for (var i = 0; i < element.childNodes.length; i++) {
var node = element.childNodes[i];
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
element.removeChild(node);
}
} //,此處加 , 符號在ie中報錯。但是在dreamweaver中沒錯
}