/*
* æ ¡éªŒå‡½æ•°
* @author likai
* @version 2.0
*/
/*
* calendaræ ‡ç¾check函数
* 返回ture æ£å¸¸æ—¥æœŸ false 异常日期
*/
function checkDate(name){
var dateFormat = ["yyyy-MM-dd", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM", "yyyyMMdd", "yyyyMM", "yyyy"];
// æ—¶é—´æ ¼å¼ å¯¹åº”æ£åˆ™è¡¨è¾¾å¼ 需è¦è¡¥é›¶
var regZeroFormat = [
/(([1-2][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))-02-29)$/,
/([1-2][0-9]{3})-([0][1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\/(((0[13578]|1[02])\/(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\/(0[1-9]|[12][0-9]|30))|(02\/(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\/02\/29)$/,
/([1-2][0-9]{3})\/([0][1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\.(((0[13578]|1[02])\.(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\.(0[1-9]|[12][0-9]|30))|(02\.(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\.02\.29)$/,
/([1-2][0-9]{3})\.([0][1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))0229)$/,
/([1-2][0-9]{3})([0][1-9]|[1][0-2])$/,
/[1-2][0-9]{3}$/];
// æ—¶é—´æ ¼å¼ å¯¹åº”æ£åˆ™è¡¨è¾¾å¼ æ— éœ€è¡¥é›¶
var regFormat = [
/(([1-2][0-9]{3})-(((0?[13578]|1[02])-(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)-(0?[1-9]|[12][0-9]|30))|(0?2-(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))-0?2-29)$/,
/([1-2][0-9]{3})-([0]?[1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\/(((0?[13578]|1[02])\/(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)\/(0?[1-9]|[12][0-9]|30))|(0?2\/(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\/0?2\/29)$/,
/([1-2][0-9]{3})\/([0]?[1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\.(((0?[13578]|1[02])\.(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)\.(0?[1-9]|[12][0-9]|30))|(0?2\.(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\.0?2\.29)$/,
/([1-2][0-9]{3})\.([0]?[1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})(((0?[13578]|1[02])(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)(0?[1-9]|[12][0-9]|30))|(0?2(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))0?229)$/,
/([1-2][0-9]{3})([0]?[1-9]|[1][0-2])$/,
/[1-2][0-9]{3}$/];
var nodes;
var index;
var node;
var dateType;
var zero;
var reg = "";
var flag;
if( name == undefined){
nodes = document.getElementsByName("zscqglCalendar");
} else {
nodes = document.getElementsByName(name);
}
for (var temp = 0; temp < nodes.length; temp++) {
node = nodes[temp];
if (node.value != null && node.value != "") {
dateType = node.getAttribute("dateType");
zero = node.getAttribute("zero");
// 记录index
for (index = 0; index < dateFormat.length; index++) {
if (dateType == dateFormat[index]) {
break;
}
}
if (zero == "true") {
reg = regZeroFormat[index];
}
else if (zero == "false") {
reg = regFormat[index];
}
if (!(reg == undefined || reg == "" || !reg.test(node.value))) {
if(reg.exec(node.value)[0].length == node.value.length){
flag = true;
continue
}
}
}
flag = false;
break;
}
return flag;
}
/*
* Numericæ ‡ç¾check函数
* 返回ture æ£å¸¸æ•°å— false 异常数å—
* ä¸æ ¡éªŒç©º è‹¥input[check=zscqglNumeric].size() = 0亦ä¸ä½œæ ¡éªŒ
* è¿”å›žç¬¬ä¸€ä¸ªæ ¡éªŒé”™è¯¯çš„input对象
*/
function checkNumeric(name){
var nodes;
var node;
var length;
var positive;
var numericLength;
var integerLength;
var reg = "";
var flag = true;
if( name === undefined){
nodes = $("input[check=zscqglNumeric]");
} else {
nodes = $("input[check="+name+"]");
}
for (var temp = 0; temp < nodes.length; temp++) {
node = nodes[temp];
if (node.value != null && node.value != "") {
flag = node;
length = node.getAttribute("length").split(",");
positive = node.getAttribute("positive");
integerLength = length[0]-1;
numericLength = length[1];
node.value = node.value.replace(/^([+-]?)(0+)(\d)/, "$1$3");
if (positive == "negative" || positive == "positive") {
reg = "(([1-9]";
}
else if (positive == "Non-negative" || positive == "Non-positive") {
reg = "((0|[1-9]";
}
else {
flag = node;
break;
}
if (numericLength == 0) {
reg += "[0-9]{0," + integerLength + "}))";
}
else {
reg += "[0-9]{0," + integerLength + "}|0)";
reg += "(\\.[0-9]{1," + numericLength + "})?)";
}
if (positive == "positive" || positive == "Non-negative") {
reg = "\\+?" + reg;
}
else if (positive == "negative") {
reg = "-" + reg;
}
else if (positive == "Non-positive") {
reg = "0|-" + reg;
}
reg = new RegExp(reg);
if (!(reg == undefined || reg == "" || !reg.test(node.value))) {
if(reg.exec(node.value)[0].length == node.value.length){
flag = true;
continue;
}
}
} else {
continue;
}
if(flag != false)
break;
}
return flag;
}
/*
* Inputæ ‡ç¾check函数
* 返回ture æ£å¸¸æ•°å— false 异常数å—
*/
function checkInput(name){
var tagType = ["mail","zipcode", "halfangle", "fullangle", "www", "phone", "mobile", "IDcard", "input"];
var tagFormat = [
/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/,
/[1-9][0-9]{5}/,
/^[\x00-\xff]+/,
/[^\x00-\xff]+/,
/[a-zA-z]+\:\/\/[\S]*/,
/((((00[1-9][0-9]\-0[1-9])(\d{2}|\d{1}))|0[1-9](\d{2}|\d{1}))\-)?(\d{8}|\d{7})/,
/1\d{10}/,
];
var nodes;
var index;
var node;
var type;
var reg = "";
var flag = true;
if( name == undefined){
nodes = $("input[check=zscqglInput]");
} else {
nodes = $("input[check="+name+"]");
}
for (var temp = 0; temp < nodes.length; temp++) {
node = nodes[temp];
if (node.value != null && node.value != "") {
flag = node;
type = node.getAttribute("type");
// 记录index
for (index = 0; index < tagType.length; index++) {
if (type == tagType[index]) {
break;
}
}
if(index == 8){
// 普通输入 æ— éœ€éªŒè¯
flag = true;
continue;
}
else if(index == 7){
// æ ¡éªŒèº«ä»½è¯
if(isIdCardNo(node.value, node)){
flag = true;
continue;
} else {
break;
}
}
else {
reg = tagFormat[index];
if (!(reg == undefined || reg == "" || !reg.test(node.value))) {
if(reg.exec(node.value)[0].length == node.value.length){
flag = true;
continue;
}
}
}
} else {
continue;
}
if(flag != false)
break;
}
return flag;
}
/*
* 验è¯èº«ä»½è¯
*/
function isIdCardNo(num, object)
{
var datereg =
/(([1-2][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))0229)$/;
var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
var error;
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15) && (intStrLen != 18)) {
//error = "输入身份è¯å·ç 长度ä¸å¯¹ï¼";
//alert(error);
return false;
}
// convert date6 to data 8
if(intStrLen == 15){
idNumber = idNumber.substring(0, 6) + "19" + idNumber.substring(6, 15);
}
// check and set value
for(var i=0; i<18; i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
//error = "错误的身份è¯å·ç ï¼.";
//alert(error);
return false;
} else if (i < 17) {
varArray[i] = varArray[i]*factorArr[i];
}
}
if (intStrLen == 18) {
//check date
var date8 = idNumber.substring(6,14);
var reg = datereg;
var result = reg.exec(date8);
if (result == null || result[0].length != 8) {
//error = "身份è¯ä¸æ—¥æœŸä¿¡æ¯ä¸æ£ç¡®ï¼.";
//alert(error);
return false;
}
// calculate the sum of the products
for(var i=0; i<17; i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = 12 - lngProduct % 11;
switch (intCheckDigit) {
case 10:
intCheckDigit = 'X';
break;
case 11:
intCheckDigit = 0;
break;
case 12:
intCheckDigit = 1;
break;
}
// check last digit
if (idNumber.charAt(17).toUpperCase() != intCheckDigit) {
//error ="身份è¯æ ¡éªŒé”™è¯¯ï¼Œè¯·æ›´æ£!";
//alert(error);
return false;
}
}
//length is 15
else{
var date8 = idNumber.substring(6, 14);
// check date
var reg = datereg;
var result = reg.exec(date8);
if (result == null || result[0].length != 8) {
//error = "身份è¯ä¸æ—¥æœŸä¿¡æ¯ä¸æ£ç¡®ï¼.";
//alert(error);
return false;
}
for (var i = 0; i < 17; i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = lngProduct % 11;
switch (intCheckDigit) {
case 0:
intCheckDigit = '1';
break;
case 1:
intCheckDigit = '0';
break;
case 2:
intCheckDigit = 'X';
break;
case 3:
intCheckDigit = '9';
break;
case 4:
intCheckDigit = '8';
break;
case 5:
intCheckDigit = '7';
break;
case 6:
intCheckDigit = '6';
break;
case 7:
intCheckDigit = '5';
break;
case 8:
intCheckDigit = '4';
break;
case 9:
intCheckDigit = '3';
break;
case 10:
intCheckDigit = '2';
break;
}
object.value = idNumber + intCheckDigit;
}
return true;
}
/*
* calendaræ ‡ç¾check函数 checkå•ä¸€æ ‡ç¾
* 返回ture æ£å¸¸æ—¥æœŸ false 异常日期
*/
function checkDateThis(tag){
var dateFormat = ["yyyy-MM-dd", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM", "yyyyMMdd", "yyyyMM", "yyyy"];
// æ—¶é—´æ ¼å¼ å¯¹åº”æ£åˆ™è¡¨è¾¾å¼ 需è¦è¡¥é›¶
var regZeroFormat = [
/(([1-2][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))-02-29)$/,
/([1-2][0-9]{3})-([0][1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\/(((0[13578]|1[02])\/(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\/(0[1-9]|[12][0-9]|30))|(02\/(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\/02\/29)$/,
/([1-2][0-9]{3})\/([0][1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\.(((0[13578]|1[02])\.(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)\.(0[1-9]|[12][0-9]|30))|(02\.(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\.02\.29)$/,
/([1-2][0-9]{3})\.([0][1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))0229)$/,
/([1-2][0-9]{3})([0][1-9]|[1][0-2])$/,
/[1-2][0-9]{3}$/];
// æ—¶é—´æ ¼å¼ å¯¹åº”æ£åˆ™è¡¨è¾¾å¼ æ— éœ€è¡¥é›¶
var regFormat = [
/(([1-2][0-9]{3})-(((0?[13578]|1[02])-(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)-(0?[1-9]|[12][0-9]|30))|(0?2-(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))-0?2-29)$/,
/([1-2][0-9]{3})-([0]?[1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\/(((0?[13578]|1[02])\/(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)\/(0?[1-9]|[12][0-9]|30))|(0?2\/(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\/0?2\/29)$/,
/([1-2][0-9]{3})\/([0]?[1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})\.(((0?[13578]|1[02])\.(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)\.(0?[1-9]|[12][0-9]|30))|(0?2\.(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))\.0?2\.29)$/,
/([1-2][0-9]{3})\.([0]?[1-9]|[1][0-2])$/,
/(([1-2][0-9]{3})(((0?[13578]|1[02])(0?[1-9]|[12][0-9]|3[01]))|((0?[469]|11)(0?[1-9]|[12][0-9]|30))|(0?2(0?[1-9]|[1][0-9]|2[0-8]))))|((([12][0-9])(0[48]|[2468][048]|[13579][26])|((1[26]|2[048])00))0?229)$/,
/([1-2][0-9]{3})([0]?[1-9]|[1][0-2])$/,
/[1-2][0-9]{3}$/];
var index;
var node;
var dateType;
var zero;
var reg = "";
if(typeof(tag) == "object"){
node = tag;
} else {
node = document.getElementById(tag);
}
if (node.value != null && node.value != "") {
dateType = node.getAttribute("dateType");
zero = node.getAttribute("zero");
// 记录index
for (index = 0; index < dateFormat.length; index++) {
if (dateType == dateFormat[index]) {
break;
}
}
if (zero == "true") {
reg = regZeroFormat[index];
}
else if (zero == "false") {
reg = regFormat[index];
}
if (!(reg == undefined || reg == "" || !reg.test(node.value))) {
if(reg.exec(node.value)[0].length == node.value.length){
return true;
}
}
}
return false;
}
/*
* Numericæ ‡ç¾check函数 checkå•ä¸€æ ‡ç¾
* 返回ture æ£å¸¸æ•°å— false 异常数å—
*/
function checkNumericThis(tag){
var node;
var length;
var positive;
var numericLength;
var integerLength;
var reg = "";
if(typeof(tag) == "object"){
node = tag;
} else {
node = document.getElementById(tag);
}
if (node.value != null && node.value != "") {
length = node.getAttribute("length").split(",");
positive = node.getAttribute("positive");
integerLength = length[0]-1;
numericLength = length[1];
node.value = node.value.replace(/^([+-]?)(0+)(\d)/, "$1$3");
if (positive == "negative" || positive == "positive") {
reg = "(([1-9]";
}else if (positive == "Non-negative" || positive == "Non-positive") {
reg = "((0|[1-9]";
}else {
return false;
}
if (numericLength == 0) {
reg += "[0-9]{0," + integerLength + "}))";
}else {
reg += "[0-9]{0," + integerLength + "}|0)";
reg += "(\\.[0-9]{1," + numericLength + "})?)";
}
if (positive == "positive" || positive == "Non-negative") {
reg = "\\+?" + reg;
}else if (positive == "negative") {
reg = "-" + reg;
}else if (positive == "Non-positive") {
reg = "0|-" + reg;
}
reg = new RegExp(reg);
if (!(reg == undefined || reg == "" || !reg.test(node.value))) {
if(reg.exec(node.value)[0].length == node.value.length){
return true;
}
}
}
return false;
}
/*
* Inputæ ‡ç¾check函数 checkå•ä¸€æ ‡ç¾
* 返回ture æ£å¸¸æ•°å— false 异常数å—
*/
function checkInputThis(tag){
var tagType = ["mail","zipcode", "halfangle", "fullangle", "www", "phone", "mobile", "IDcard", "input"];
var tagFormat = [
/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/,
/[1-9][0-9]{5}/,
/^[\x00-\xff]+/,
/[^\x00-\xff]+/,
/[a-zA-z]+\:\/\/[\S]*/,
/((((00[1-9][0-9]\-0[1-9])(\d{2}|\d{1}))|0[1-9](\d{2}|\d{1}))\-)?(\d{8}|\d{7})/,
/1\d{10}/,
];
var index;
var node;
var type;
var reg = "";
if(typeof(tag) == "object"){
node = tag;
} else {
node = document.getElementById(tag);
}
if (node.value != null && node.value != "") {
type = node.getAttribute("type");
// 记录index
for (index = 0; index < tagType.length; index++) {
if (type == tagType[index]) {
break;
}
}
if(index == 8){
// 普通输入 æ— éœ€éªŒè¯
return true;
}else if(index == 7){
// æ ¡éªŒèº«ä»½è¯
return isIdCardNo(node.value, tag);
}else {
reg = tagFormat[index];
if (!(reg == undefined || reg == "" || !reg.test(node.value))) {
if(reg.exec(node.value)[0].length == node.value.length){
return true;
}
}
}
}
return false;
}
/*
* 自动补é½æ—¥æœŸæ ¼å¼
*/
function date(tag){
var dateFormat = ["yyyy-MM-dd", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM", "yyyyMMdd", "yyyyMM", "yyyy"];
var keyDate = ["-","-","/","/",".",".",189,109,191,111,190,110];
var index;
var node;
var dateType;
var zero;
var reg = "";
if(typeof(tag) == "object"){
node = tag;
} else {
node = document.getElementById(tag);
}
if (node.value != null && node.value != "") {
dateType = node.getAttribute("dateType");
zero = node.getAttribute("zero");
}
// 记录index
for (index = 0; index < dateFormat.length; index++) {
if (dateType == dateFormat[index]) {
break;
}
}
var e = event || window.event;
if(index < 6){
if (zero == "true") {
if(node.value.length==4){
node.value += keyDate[index];
}
else if(node.value.length==6){
if(e.keyCode == keyDate[index+6] || e.keyCode == keyDate[index+7]){
node.value = node.value.substring(0,5);
}
}
if(index % 2 == 0 ){
if(node.value.length==7){
node.value += keyDate[index];
}
else if(node.value.length==9){
if(e.keyCode == keyDate[index+6] || e.keyCode == keyDate[index+7]){
node.value = node.value.substring(0,8);
}
}
}
}
else if (zero == "false") {
if(node.value.length==4){
node.value += keyDate[index];
}
else if(node.value.length==6){
if(e.keyCode == keyDate[index+6] || e.keyCode == keyDate[index+7]){
node.value = node.value.substring(0,5);
} else if(e.keyCode!=96 && e.keyCode!=82 && e.keyCode!=97 && e.keyCode!=49){
node.value += keyDate[index];
}
}
if(index % 2 == 0 ){
if(node.value.length==7){
if(node.value.substring(5,6)!= 0 && node.value.substring(5,6)!= 1 && (e.keyCode == keyDate[index+6] || e.keyCode == keyDate[index+7])){
node.value = node.value.substring(0,6);
}
else if(node.value.substring(6,7)!= keyDate[index]){
node.value += keyDate[index];
}
}
else if(node.value.length==8){
if(node.value.substring(6,7)== keyDate[index]&& (e.keyCode == keyDate[index+6] || e.keyCode == keyDate[index+7])){
node.value = node.value.substring(0,7);
}
}
else if(node.value.length==9){
if(e.keyCode == keyDate[index+6] || e.keyCode == keyDate[index+7]){
node.value = node.value.substring(0,8);
}
}
}
}
}
}