var dsSeleParams="status:no; scroll:yes; resizable:yes; help:no;dialogWidth:500px;dialogHeight:450px;"; function getTodayYear() { var dtTodayYear = ""; var objdate = new Date(); //Create Date object. dtTodayYear += objdate.getYear() + "年"; //Get month return dtTodayYear; } function getTodayYearOnly() { var dtTodayYear = ""; var objdate = new Date(); //Create Date object. dtTodayYear += objdate.getYear(); //Get month return dtTodayYear; } function getTodayMonth() { var dtTodayMonth = ""; var objdate = new Date(); //Create Date object. dtTodayMonth += (objdate.getMonth() + 1) + "月"; //Get month return dtTodayMonth; } function getTodayMonthOnly() { var dtTodayMonth = ""; var objdate = new Date(); //Create Date object. dtTodayMonth += objdate.getMonth(); //Get month return dtTodayMonth; } function getTodayDate() { var dtTodayDate = ""; var objdate = new Date(); //Create Date object. dtTodayDate += objdate.getYear()+ "年"; //Get year. dtTodayDate += (objdate.getMonth() + 1) + "月"; //Get month dtTodayDate += objdate.getDate() + "日"; //Get day return dtTodayDate; } function getTodayDateOnly() { var dtTodayDate = ""; var objdate = new Date(); //Create Date object. dtTodayDate += objdate.getDate(); //Get day return dtTodayDate; } function getTodayWeekDay() { var d, day, x, s = ""; var x = new Array("星期日", "星期一", "星期二"); var x = x.concat("星期三","星期四", "星期五"); var x = x.concat("星期六"); d = new Date(); day = d.getDay(); return(s += x[day]); } function getSomeWeekDay(dtYear, dtMonth, dtDate) { var objDate = new Date(dtYear, dtMonth, dtDate); var day, x, s = ""; var x = new Array("星期日", "星期一", "星期二"); var x = x.concat("星期三","星期四", "星期五"); var x = x.concat("星期六"); day = objDate.getDay(); return(s += x[day]); } /************************************************************************************ 名称: stretchPage() 功能: 页面调整高度用,为了使页面不出现滚动条 参数: 无 返回: 无 引用: 无 说明: 需要在每个要调整页面高度的标签处增加 onload="toppage" LMDate: 2006-02-22 **************************************************************************************/ function stretchPage() { if (self.location!=top.location) { parent.document.all(self.name).height = document.body.scrollHeight; top.window.scroll(0,0); } } /************************************************************************************ 名称: checkall(parentctrl, checkboxctrl) 功能: 判断checkbox控件组中是否有选中状态 参数: checkbox控件 返回: 有选中则返回true,否则返回false 引用: 无 说明: 有机会待改,目前大多数已经写为checkall方法了 LMDate: 2006-03-30 **************************************************************************************/ function checkallcheckbox(parentctrl, checkboxctrl) { if (checkboxctrl && parentctrl) { //for (checkboxctrl.length) } for (var i=0;i 0) val += ","; val += temp; } } return val; } /************************************************************************************* 名称: regularCode(val) 功能: 服务类型及数据字典中用的编码,为数字或英文字母 参数: value 返回: 通过true,不通过false **************************************************************************************/ function regularCode(val) { // var regExp = new RegExp(/[a-zA-Z\d]/); // var regNotExp = new RegExp(/[^a-zA-Z\d_]/); var regExp = /[a-zA-Z\d]/; var regNotExp = /[^a-zA-Z\d_]/; if (regExp.test(val)) { if (regNotExp.test(val)) { return false; } return true; } else return false; } /************************************************************************************* 名称: regular(val) 功能: 注册用户名输入规范 参数: value 返回: 通过true,不通过false **************************************************************************************/ function regular(val) { // var regExp = new RegExp(/^[a-zA-Z][\d_]*/); // var regNotExp = new RegExp(/[^a-zA-Z\d_]/); var regExp = /^[a-zA-Z][\d_]*/; var regNotExp = /[^a-zA-Z\d_]/; if (regExp.test(val)) { if (regNotExp.test(val)) { return false; } return true; } else return false; } /************************************************************************************ 名称: getStringBytes(val) 功能: 获取某个字符串的字节数,根据一般的字符集编码:英文为一个byte,中文为两个byte 参数: val --需要查询字节数的字符串 返回: int 引用: 无 说明: Author: zuomin LMDate: 2006-01-25 **************************************************************************************/ function getStringBytes(val) { if ( val == "" ) return 0; var idx = 0 ; var totalByte = 0 ; for ( ; idx < val.length ; idx ++ ) { if ( val.charCodeAt(idx) < 128 ) { totalByte++; }else{ totalByte += 2; } } return totalByte; } /************************************************************************************* 名称: countword(val) 功能: 服务类型及数据字典中用的编码,为数字或英文字母 参数: value 返回: 通过true,不通过false **************************************************************************************/ function countword(ctrl, val) { if (ctrl && val) ctrl.innerHTML=" 已输入字符: "+getStringBytes(val); } /************************************************************************************ 名称: validDateStr(year,month,day) 功能: 检查用户选择的年、月、日三部分给合起来是否是一个正确的参数 参数: year --用户所输入的年份(四位或两位) month -- 用户所输入的月份(一位或两位) month -- 用户所输入的日期(一位或两位) 返回: bool 引用: 无 说明: 需要对润年进行判断 Author: zuomin LMDate: 2006-01-25 **************************************************************************************/ function validDateStr(year,month,day) { var yearVal = trim(year); var monthVal = trim(month); var dayVal = trim(day); //年份必须为四位或者2位 if ( !(yearVal.length == 2 || yearVal.length == 4)) { return false; } //月份、日期必须为1位或2位 if ( monthVal.length > 2 || dayVal.length > 2 ) { return false; } //判断年份为两位时,增加前面两位的世纪 20或19 if ( parseInt(yearVal) > 50 ) { yearVal = "19" + yearVal; } else { yearVal = "20" + yearVal; } //判断年份是否为一个正整数 if ( !isPlusInt(yearVal)) { return false; } //判断月份是否有前缀 0 ,如果有则先将其去掉 if ( monthVal.length == 2 && monthVal.charAt(0) == "0" ) { monthVal = monthVal.charAt(1); } //判断日期是否有前缀 0 ,如果有则先将其去掉 if ( dayVal.length == 2 && dayVal.charAt(0) == "0" ) { dayVal = dayVal.charAt(1); } //判断月份与日期是否是一个正整数 if ( !isPlusInt(monthVal) || !isPlusInt(dayVal) ) { return false; } //判断月份是否大于 12 if ( monthVal < 0 || monthVal > 12 ) { return false; } var MonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]; //判断是否为润年 if ((( yearVal % 4 == 0 ) && (yearVal % 100 != 0 ) ) || (yearVal % 400 == 0 )) { MonthDays[1] = 29; } // 判断日期是否正确 if ( day > MonthDays[monthVal - 1] || day < 0 ) { return false; } return true; } /************************************************************************************ 名称: isNumber(val) 功能: 检查某个参数是否为数字类型,只包括0和正整数 参数: val---入参;需要检查的参数 返回: bool 引用: 无 说明: 目前不支持对负整数进行检查,并且不会检查参数是否起出最大整数范围 LMDate: 2006-01-25 **************************************************************************************/ function isNumber(val) { val = trim(val); // 检查是否为0 --特殊检查 if ( val == "0" ) { return true; } // 检查是否为正整数 // var reg = new RegExp(/^[\d]*$/) ; var reg = /^[\d]*$/ ; if ( !reg.test(val) ) { return false; } else return true; } /************************************************************************************ 名称: isInteger(val) 功能: 检查某个参数是否为Int类型,只包括0和正整数 参数: val---入参;需要检查的参数 返回: bool 引用: 无 说明: 目前不支持对负整数进行检查,并且不会检查参数是否起出最大整数范围 Author: zuomin LMDate: 2006-01-25 **************************************************************************************/ function isInteger(val) { val = trim(val); // 检查是否为0 --特殊检查 if ( val == "0" ) { return true; } var idx = 0 ; for ( ; idx < val.length ; idx ++ ) { if ( val.charCodeAt(idx) < 48 || val.charCodeAt(idx) > 57 ) { return false; } } return true; // 检查是否为正整数 // var reg = new RegExp(/^[1-9]+[0-9]*$/) ; // if ( !reg.test(val) ) // { // return false; // } // else // return true; } /************************************************************************************ 名称: isPlusInt(val) 功能: 检查某个参数是否为正整数不包括0 参数: val---入参;需要检查的参数 返回: bool 引用: 无 说明: 目前不支持对负整数进行检查,并且不会检查参数是否起出最大整数范围 Author: zuomin LMDate: 2006-01-25 **************************************************************************************/ function isPlusInt(val) { val = trim(val); // 检查是否为0 --特殊检查 if ( val == "0" ) { return false; } var idx = 0 ; for ( ; idx < val.length ; idx ++ ) { if ( val.charCodeAt(idx) < 48 || val.charCodeAt(idx) > 57 ) { return false; } } return true; // 检查是否为正整数 // var reg = new RegExp(/^[1-9]+[0-9]*$/) ; // if ( !reg.test(val) ) // { // return false; // } // else // return true; } /************************************************************************************ 名称: limitInputInteger(ctl) 功能: 限制某个控件中只能输入数据,该数字不能以0开头,不能带有小数点 参数: ctl---入参;需要检查输入参数的控件 返回: 字符串 引用: 无 说明: 若控件中的输入信息不为正整数,则光标不会发生跳转 Author: zuomin LMDate: 2006-01-25 **************************************************************************************/ function limitInputInteger(ctl) { alert("进入参数有效性检查!"); ctl.value = trim(ctl.value); content = ctl.value; if ( content == "" ) { alert("您所输入的内容为空!"); return false; } // var reg = new RegExp(/^[1-9]+[0-9]*$/) ; var reg = /^[1-9]+[0-9]*$/ ; if ( !reg.test(content) ) { alert("您的输入中有非法字符,或者输入错误!"); ctl.select(); ctl.focus(); return false; } else return true; } /************************************************************************************ 名称: trim(strValue) 功能: 该函数用于去除字符串前后的空格 参数: strValue---入参;字符串;待处理的字符串 返回: 字符串 引用: 无 说明: 若为全空格字符串则返回空 Author: Albertzhu LMDate: 2001-12-30 **************************************************************************************/ function trim(strValue) { if (strValue==null) return ""; return strValue.replace(/(^\s*)|(\s*$)/g, ""); /*var iLTR, jRTL; var chr; //去除字符串前后的空格 for( iLTR = 0; iLTR < strValue.length; iLTR++ ) { chr = strValue.charAt(iLTR) ; if( chr != " " ) break; } if( iLTR == strValue.length ) return ""; //去除字符串前后的空格 for( jRTL = strValue.length - 1; jRTL >= 0; jRTL-- ) { chr = strValue.charAt(jRTL); if( chr != " " ) break; } return strValue.substring(iLTR, jRTL + 1);*/ } /************************************************************************************ 名称: trimZero(strValue) 功能: 该函数用于去除字符串的前导0 参数: strValue---入参;字符串;待处理的字符串 返回: 字符串 引用: 无 说明: 若为全0字符串则返回空 Author: Albertzhu LMDate: 2001-12-30 **************************************************************************************/ function trimZero(strValue) { var iLTR; var chr; //去除字符串前导0 for( iLTR = 0; iLTR < strValue.length; iLTR++ ) { chr = strValue.charAt(iLTR) ; if( chr != "0" ) break; } if( iLTR == strValue.length ) return ""; return strValue.substring(iLTR, strValue.length); } /************************************************************************************ 名称: existChinese(strValue) 功能: 该函数用于检查字符串是否包含汉字 参数: strValue---入参;字符串;待处理的字符串 返回: 布尔值; true--包含汉字; false--不包含汉字 引用: 无 说明: Author: Albertzhu LMDate: 2001-12-30 **************************************************************************************/ function existChinese(strValue) { var chrCode for(var iChar = 0; iChar < strValue.length; iChar++) { chrCode = strValue.charCodeAt(iChar); if(parseInt(chrCode) > 255) { return true; } } return false; } /************************************************************************************ 名称: formatInputNumber(oElement, length, decimal) 功能: 该函数用于格式化输入框(INPUT)的值,只用于非负数的情况 参数: oElement---入参;对象;待处理的输入框(INPUT)对象 length-----入参;数字;数值长度(包括小数点) decimal----入参;数字;小数位数 返回: 数值型 引用: trim(strValue);trimZero(strValue);existChinese(strValue); 说明: 如果输入数据包含汉字,则返回空值 如果输入数据大于规定的位数,则溢出为0,并格式化成相应的小数位数 如果输入数据的小数位数大于要求的位数,则用去尾法消去,若不足要求的小数位数则补零 小数点占一位 一般用于INPUT对象的ONBLUR事件 Author: Albertzhu LMDate: 2001-12-30 **************************************************************************************/ function formatInputNumber(oElement, length, decimal) { var oInput = oElement; var oInputValue = trim(oInput.value); var iLowcase = oInputValue.indexOf("e"); var iUpcase = oInputValue.indexOf("E"); if( oInputValue == "") //为空值 { oInput.value = ""; return true; } if (existChinese(oInputValue)) //包含汉字 { oInput.value = ""; return true; } if((iLowcase != -1)||(iUpcase != -1)) //科学记数法 { /*********************************************** 处理科学记数法 ***********************************************/ return true; } //一般记数法 var bOverflow = false; //是否溢出 var partInteger = ""; //整数部分的值 var countIntegerLength = 0; //整数部分长度 var partDecimal = ""; //小数部分的值 var countDecimalLength = 0; //小数部分长度 var iPoint = oInputValue.indexOf("."); //小数点位置 var allowIntegerLength = length - decimal - 1; //整数部分允许长度 var allowDecimalLength = decimal; //小数部分允许长度 //获得输入数据的整数部分和小数部分 if(iPoint == -1) //输入是整数 { partInteger = oInputValue; partInteger = trimZero(partInteger); //去除前导0 countIntegerLength = oInputValue.length; } else //输入是小数 { partInteger = oInputValue.substring(0,iPoint); partInteger = trimZero(partInteger); //去除前导0 countIntegerLength = partInteger.length; //直接用去尾法截取小数位 partDecimal = oInputValue.substring(iPoint + 1, iPoint + 1 + allowDecimalLength); countDecimalLength = partDecimal.length; } if (partInteger == "") //去除前导0后为空 { partInteger = "0"; } //判断整数部分的位数是否超过允许的位数,若是则溢出为0 if(countIntegerLength > allowIntegerLength) { partInteger = "0"; bOverflow = true; } //将不足小数部分补零 if(countDecimalLength < allowDecimalLength) { for (var iDecimal = 0; iDecimal < (allowDecimalLength - countDecimalLength); iDecimal++) partDecimal = partDecimal + "0"; } //将整数部分和小数部分组合 if (partDecimal != "") { oInput.value = partInteger + "." + partDecimal; } else { oInput.value = partInteger } if (bOverflow) oInput.focus(); } /************************************************************************************ 名称: checkFloat() 功能: 该函数用于限制输入框(INPUT)只能输入数字和小数点 参数: 无---默认当前输入框(INPUT) 返回: 布尔值; true--有效输入; false--无效输入 引用: 无 说明: 一般用于INPUT对象的ONKEYPRESS事件 *对汉字的输入没有限制 Author: Albertzhu LMDate: 2001-12-30 **************************************************************************************/ function checkFloat() { event.cancelBubble = true; var objSrc = event.srcElement; var strValue; if (objSrc.tagName == "INPUT") { strValue = objSrc.value if (strValue.indexOf(".") != -1) { if(event.keyCode >= 48 && event.keyCode <= 57) return true; else return false; } else { if((event.keyCode >= 48 && event.keyCode <= 57) || event.keyCode == 46) return true; else return false; } } } /************************************************************************** 名称: formatNumber(NumberValue, iDecimal) 功能: 该函数用于格式化数值型数据 参数: NumberValue---入参;数字;待格式化的数值数据 iDecimal------入参;数字;小数位数 返回: 数值型 引用: trim(strValue);trimZero(strValue);existChinese(strValue); 说明: 如果输入数据包含汉字,则返回空值 如果输入数据大于规定的位数,则溢出为0,并格式化成相应的小数位数 如果输入数据的小数位数大于要求的位数,则用去尾法消去,若不足要求的小数位数则补零 小数点占一位 一般用于INPUT对象的ONBLUR事件 Author: Albertzhu LMDate: 2001-12-30 **************************************************************************/ function formatNumber(NumberValue, iDecimal) { var iTmp = ""; if ( iDecimal == null ) iDecimal = 0; //默认没有小数位 var strNumber = NumberValue + ""; if (isNaN(strNumber) || (strNumber.length == 0)) { for (i = 0; i < iDecimal; i++) iTmp += "0" if (iTmp != "") strNumber = "0." + iTmp else strNumber = "0"; return strNumber; } var ifirst = 0; for(var iN = 0; iN < strNumber.length-1; iN++) { if(strNumber.indexOf(".") == 1) break; else if(strNumber.charAt(iN) == "0") ifirst += 1; else break; } strNumber = strNumber.substring(ifirst); if(strNumber.indexOf(".") == 0) strNumber = "0" + strNumber; if(strNumber.indexOf("-.") == 0) strNumber = "-0." + strNumber.substring(2); var iDi = strNumber.indexOf(".",0); if(iDi < 0) { for (i = 0; i < iDecimal; i++) iTmp += "0" if (iTmp != "") strNumber += "." + iTmp; return strNumber; } var iDiLength = strNumber.length - (iDi+1); if (iDiLength == iDecimal) return strNumber; if (iDiLength < iDecimal) { for (var iLoop = iDecimal; iLoop > iDiLength; iLoop--) strNumber += '0'; return strNumber; } else { var iNum1 = parseFloat(strNumber); iNum1 = (iNum1 + (5 / Math.pow(10,(iDecimal + 1)))) * (Math.pow (10,iDecimal)); iNum1 = Math.floor(iNum1); iNum1 = iNum1 / Math.pow (10,iDecimal); strNumber = new String(iNum1); var iDi = strNumber.indexOf(".",0); if(iDi < 0) { for (i = 0; i < iDecimal; i++) iTmp += "0" if (iTmp != "") strNumber += "." + iTmp; return strNumber; } var iDiLength = strNumber.length - (iDi+1); if (iDiLength == iDecimal) return strNumber; if (iDiLength < iDecimal) { for (var iLoop = iDecimal; iLoop > iDiLength; iLoop--) strNumber += "0"; return strNumber; } } } /************************************************************************** 名称: InputField(name, description, checkCondition) 功能: 该函数用于创建字段对象 参数: name------------入参;必输;字符串;字段对象的名称 description-----入参;可选;字符串;字段对象的说明 checkCondition--入参;可选;字符串;检查条件 返回: 字段对象 引用: 无; 说明: 字段说明默认为空--"" 检查条件默认为空--"" 本对象用New方法创建,如 var objFld = new InputField("FieldName","FieldDescription") Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ function InputField(name, description, checkCondition, setFocus) { this.fieldName = name; if (description == null) { this.description = ""; } else { this.description = description; } if (checkCondition == null) { this.checkCondition = ""; } else { this.checkCondition = checkCondition; } if ((setFocus == "N")||(setFocus == "n")) { this.setFocus ="N" } else { this.setFocus = "Y"; } } /************************************************************************** 名称: getHtmlElement(InputField, frmName, bAlert) 功能: 该函数用于获得页面指定表单的指定元素 参数: InputField------入参;必输;对象;指定的字段对象 frmName----入参;可选;字符串;FORM表单名称 bAlert-----入参;可选;布尔值;是否弹出提示框 返回: 对象 引用: InputField(name, description, checkCondition); 说明: 默认在整个页面(DOCUMENT)查找 如果不存在指定的FORM表单,则返回null值 如果不存在指定的字段元素,则返回null值 默认弹出提示框 如果存在多个同名元素,则返回元素对象数组,否则返回元素对象 Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ function getHtmlElement(InputField, frmName, bAlert) { var htmlElement; var bNullAlert; if (bAlert == null) { bNullAlert = true; } else { bNullAlert = bAlert; } if (frmName != null) //在指定的FROM表单中查找 { var objFrm = document.all(frmName); if (objFrm == null) { if (bNullAlert) { alert("不存在指定的Form表单[" + frmName + "]。"); } return null; } htmlElement = objFrm.all(InputField.fieldName); } else //在整个页面中查找 { htmlElement = document.all(InputField.fieldName); } if (htmlElement == null) { if (bNullAlert) { var strFldDesc = InputField.description; if (strFldDesc != "") { strFldDesc = "--" + strFldDesc; } if (frmName != null) { alert("在指定的Form表单[" + frmName + "]中不存在指定的元素[" + InputField.fieldName + "]" + strFldDesc + "。"); } else { alert("在页面中不存在指定的元素[" + InputField.fieldName + "]" + strFldDesc + "。"); } } return null; } return htmlElement; } /************************************************************************** 名称: checkMasterValidate(aFields, frmName) 功能: 该函数用于检查主表字段值是否有效 参数: aFields----入参;必输;数组对象;待检查的字段对象数组 frmName----入参;可选;字符串;FORM表单名称 返回: 布尔型 引用: InputField(name, description, checkCondition); 说明: 默认在整个页面(DOCUMENT)检查 如果页面中不存在指定的FORM表单,则返回false 如果在指定的FORM表单中不存在指定的字段元素,则返回false 如果在指定的FORM表单中指定的字段元素的值为空,则返回false 否则返回true Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ function checkMasterValidate(aFields, frmName) { var fldCount = aFields.length; var fldElement; for (var iField = 0; iField < fldCount; iField++) { fldElement = getHtmlElement(aFields[iField], frmName) /************************************************************************* if((fldElement.length != null) && (fldElement.length > 0 )) //有重复元素 { alert("存在重复元素[" + aFields[iField].fieldName + "]。" + fldElement.length); return false; } //select 框 **************************************************************************/ if (fldElement != null) { if (trim(fldElement.value) == aFields[iField].checkCondition) { if (aFields[iField].description != "") { alert("请输入[" + aFields[iField].description + "]。"); } else { alert("请输入[" + aFields[iField].fieldName + "]。"); } if (aFields[iField].setFocus == "Y") { fldElement.focus(); } return false; } } else { return false; } } return true; } /************************************************************************** 名称: checkDetailValidate(aFields, frmName) 功能: 该函数用于检查明细表字段值是否有效 参数: aFields----入参;必输;数组对象;待检查的字段对象数组 frmName----入参;可选;字符串;FORM表单名称 返回: 布尔型 引用: InputField(name, description, checkCondition);trim(strValue); 说明: 默认在整个页面(DOCUMENT)检查 如果页面中不存在指定的FORM表单,则返回false 如果在指定的FORM表单中不存在指定的字段元素,则返回false 如果在指定的FORM表单中指定的字段元素的值为空,则返回false 否则返回true Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ function checkDetailValidate(aFields, frmName) { var fldCount = aFields.length; var fldElement; var curElementLine; for (var iField = 0; iField < fldCount; iField++) { fldElement = getHtmlElement(aFields[iField], frmName, false) //当前字段 { if (fldElement == null) //没有明细行 { alert("请输入明细。"); return false; } if((fldElement.length != null) && (fldElement.length > 0 )) //明细多行 { for (var iLine = 0; iLine < fldElement.length; iLine++) //当前字段的每一行 { curElementLine = fldElement[iLine]; if (trim(curElementLine.value) == aFields[iField].checkCondition) { if (aFields[iField].description != "") { alert("请输入明细[" + aFields[iField].description + "]栏。"); } else { alert("请输入明细[" + aFields[iField].fieldName + "]栏。"); } if (aFields[iField].setFocus == "Y") { curElementLine.focus(); } return false; } } } else //明细单行 { if (trim(fldElement.value) == aFields[iField].checkCondition) { if (aFields[iField].description != "") { alert("请输入明细[" + aFields[iField].description + "]栏。"); } else { alert("请输入明细[" + aFields[iField].fieldName + "]栏。"); } if (aFields[iField].setFocus == "Y") { fldElement.focus(); } return false; } } } } return true; } /************************************************************************** 名称: table_onclick(oTable) 功能: 该函数用于处理TABLE的点击事件 参数: oTable----入参;必输;TABLE对象;待响应的TABLE对象 返回: 布尔型 引用: changeRow(iRow,oTable) 说明: 由于全局变量的关系,目前只能处理一个页面中的单个表 Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ var m_iTableCurCol = -1; var m_iTableCurRow = -1; function table_onclick(oTable,itemname,itemname1) {//alert("oTable"+oTable); event.cancelBubble = true; var src = window.event.srcElement; //alert("src"+src); while (src.tagName != "TR" ) { if (src.tagName == "TD") { if (src.cellIndex != m_iTableCurCol) m_iTableCurCol = -1; } if (src.tagName == "TABLE" || src.tagName=="BODY") return false; src = src.parentElement; } if (src.rowIndex == 0) return false; changeRow(src.rowIndex, oTable,itemname,itemname1); } /************************************************************************** 名称: changeRow(iRow,oTable) 功能: 该函数用于处理TABLE的点击事件 参数: iRow----入参;必输;获得焦点的行号 oTable--入参;必输;TABLE对象;待响应的TABLE对象 返回: 布尔型 引用: 无 说明: 由于全局变量的关系,目前只能处理一个页面中的单个表 Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ function changeRow(iRow,oTable,itemname,itemname1) { var src = window.event.srcElement; var bMoveRow = (m_iTableCurRow != iRow) var oRows = oTable.rows; if (m_iTableCurRow > 0 && m_iTableCurRow <= oRows.length - 1) { jo=m_iTableCurRow % 2 if(jo!=0) oRows[m_iTableCurRow].className = "MouseOutWhite"; else oRows[m_iTableCurRow].className = "MouseOutHui"; } m_iTableCurRow=iRow; var oRowlength = oTable.rows.length; var I=0; var selected=""; if(!itemname) return; if(!itemname.length) { if(itemname.checked==true) { oRows[1].className = "Selected_Row"; } }else{ for(var i=0;i 0 && m_iTableCurRow <= oRows.length - 1) { jo=m_iTableCurRow % 2 if(jo!=0) oRows[m_iTableCurRow].className = "MouseOutWhite"; else oRows[m_iTableCurRow].className = "MouseOutHui"; } } else if(src.tagName!="INPUT" && itemname[m_iTableCurRow-1].checked==false ) { oRows[iRow].className = "Selected_Row"; itemname[m_iTableCurRow-1].checked=true; var I=0; if (document.jiayitongform.checkbox2.checked==true) {document.jiayitongform.checkbox2.checked=false;} if (document.jiayitongform.checkbox2.checked==false ) { if(!itemname) return; if(!itemname.length) { if( itemname.checked==true) { I=I+1;} }else{ for(var i=0;i 0 && m_iTableCurCol <= oRows[0].cells.length) { try { oRows(m_iTableCurRow).cells(m_iTableCurCol).lastChild.focus(); } catch(e) {} } //**************************************************************************88 return true; } /************************************************************************** 名称: getActiveRow(tblName) 功能: 该函数用于处理TABLE的点击事件 参数: tblName----入参;必输;待处理的TABLE名 返回: 布尔型 引用: 无 说明: 由于全局变量的关系,目前只能处理一个页面中的单个表 Author: Albertzhu LMDate: 2001-12-31 **************************************************************************/ function getActiveRow(tblName, strAlert) { if (m_iTableCurRow == -1 ) { if (strAlert == null) { alert("请选择待处理的行。") } else { alert(strAlert) } return false; } else { var oTable = document.all(tblName); var aInputs = oTable.getElementsByTagName("input"); var oInput; var oRadioBoxs = new Array(); var j = 0; for(var i = 0; i < aInputs.length; i++) { oInput = aInputs[i]; if (oInput.type == "radio") { oRadioBoxs[j++] = oInput; } } oRadioBoxs[m_iTableCurRow - 1].checked = true; return true; } } /************************************************************************** 新增鼠标移至表格变色的方法 **************************************************************************/ function table_on(oTable) { event.cancelBubble = true; var src = window.event.srcElement; while (src.tagName != "TR") { if (src.tagName == "TD") { if (src.cellIndex != m_iTableCurCol) m_iTableCurCol = -1; } if (src.tagName == "TABLE" || src.tagName=="BODY") return false; src = src.parentElement; } if (src.rowIndex == 0) return false; var oRows = oTable.rows; oRows[src.rowIndex].className = "Selected_Row"; } function table_out(oTable) { event.cancelBubble = true; var src = window.event.srcElement; while (src.tagName != "TR") { if (src.tagName == "TD") { if (src.cellIndex != m_iTableCurCol) m_iTableCurCol = -1; } if (src.tagName == "TABLE" || src.tagName=="BODY") return false; src = src.parentElement; } if (src.rowIndex == 0) return false; var oRows = oTable.rows; if (src.rowIndex > 0 && src.rowIndex <= oRows.length - 1) { jo=src.rowIndex % 2 if(jo!=0) oRows[src.rowIndex].className = "MouseOutWhite"; else oRows[src.rowIndex].className = "MouseOutHui"; } } /************************************************************************************************ function : isDate(strD) purpose : 判断一个字符串是否是合法的日期字符串。但字符串的格式必须是“YYYY/MM/DD” parameters : strD: 日期字符串 return : true / false *************************************************************************************************/ function isDate(strD) { if (strD == "" || strD == null) return false; var strDate = now(strD.replace(/-/g,"/")) if (strDate == "" || strDate != strD) return false; else return true; } /************************************************************************************************** function : isEmail(strEmail) purpose : 检查字符串是否是一个合法的Email地址 parameter : strEmail Email地址字符串 return : true/false ***************************************************************************************************/ function isEmail(strEmail) { var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid if (!reg1.test(strEmail) && reg2.test(strEmail)) return true else return false; } /************************************************************************************************ function : formatNumber(strNumber) purpose : 格式化数字。在数字中加入千分分隔符“,” parameters : strNumber : 需格式化的数字 return : Format money *************************************************************************************************/ function formatNumber(strNumber) { strNumber = "" + strNumber; DecSeparator = "." ThousandsSeparator = "," if (strNumber.indexOf (DecSeparator, 0) != -1) { IntegerAmount = strNumber.substring(0, strNumber.indexOf (DecSeparator, 0)); FractionAmount = strNumber.substring(strNumber.indexOf (DecSeparator, 0)+1, strNumber.indexOf (DecSeparator, 0)+3); if (FractionAmount.length == 0) FractionAmount = "00"; if (FractionAmount.length == 1) FractionAmount = FractionAmount + "0"; } else { IntegerAmount = strNumber; FractionAmount = "00"; } OutString = ""; len = IntegerAmount.length; if (len>=3) { while (len>0) { TempString = IntegerAmount.substring(len-3, len) if (TempString.length == 3) { OutString = ThousandsSeparator + TempString + OutString len = len-3; } else { OutString = TempString + OutString len = 0 } } if (OutString.substring(0, 1) == ThousandsSeparator) IntegerAmount = OutString.substring (1, OutString.length) else IntegerAmount = OutString } return (IntegerAmount + DecSeparator + FractionAmount); } /************************************************************************************************ function : unFormatNumber(strNumber) purpose : 将由函数 formatNumber 格式过的字符串中的格式去掉。 parameters : strNumber 被 formatNumber 格式过的字符串 return : *************************************************************************************************/ function unFormatNumber(strNumber) { strNumber = strNumber + ""; var oReg=/,/g; strNumber = strNumber.replace(oReg,"") return parseFloat(strNumber) } /*------------------------------------------------------------------------- function : formatDigits(iNum, iDn) purpose : 将数字的格式转变为指定小数位的格式。小数采用四舍五入法截取。 parameter : iNum-需转换的数据。 iDn-小数位数。 return : 返回字符串型格式化后数据 --------------------------------------------------------------------------*/ function formatDigits(iNum, iDn)//OK. { var iTmp=""; if ( iDn == null ) iDn = 0; var strNum =iNum + ""; strNum = trim(strNum); if (isNaN(strNum) || strNum.length == 0) { for (i = 0; i < iDn; i++) iTmp += "0" if (iTmp != "") strNum = "0." + iTmp else strNum = "0"; return strNum; } var ifirst=0; for(var iN=0;iNiDiLength; iLoop--) strNum += '0'; return strNum; } else { var iNum1 = parseFloat(strNum); iNum1 = (iNum1+(5/Math.pow(10,(iDn+1))))*(Math.pow (10,iDn)); iNum1 = Math.floor(iNum1); iNum1 = iNum1/Math.pow (10,iDn); strNum = new String(iNum1); var iDi = strNum.indexOf(".",0); if(iDi < 0) { for (i = 0; i < iDn; i++) iTmp += "0" if (iTmp != "") strNum += "."+iTmp; return strNum; } var iDiLength = strNum.length - (iDi+1); if (iDiLength == iDn) return strNum; if (iDiLength < iDn) { for (var iLoop=iDn; iLoop>iDiLength; iLoop--) strNum += '0'; return strNum; } } } /**************************************************************************************************** function : now(strD) purpose : 获得当前日期,或将指定的字符串转化为标准的YYYY/MM/DD parameter : strD 任意合法格式的日期字符串 return : "YYYY/MM/DD"格式的字符串,发生错误是时返回空字符串 ****************************************************************************************************/ function now(strD) { var dateObj if (strD == "") return ""; if(strD == null) dateObj = new Date(); else { dateObj = new Date(strD); if (isNaN(dateObj)) return ""; } var strDate = ""; strDate += dateObj.getFullYear(); strDate += "/"; strDate += (dateObj.getMonth()>8)? dateObj.getMonth()+1: "0"+(dateObj.getMonth()+1); strDate += "/"; strDate += (dateObj.getDate()>9)? dateObj.getDate(): "0" +dateObj.getDate(); return strDate; } /**************************************************************************************************** function : time(strD) purpose : 获得当前时间,或将指定的字符串转化为标准的HH:MM:SS parameter : strD 任意合法格式的时间字符串 return : "HH:MM:SS"格式的字符串,发生错误是时返回空字符串 ****************************************************************************************************/ function time(strD) { var dateObj if (strD == "") return ""; if(strD == null) dateObj = new Date(); else { dateObj = new Date(strD); if (isNaN(dateObj)) return ""; } var strDate = ""; strDate += (dateObj.getHours()>9)? dateObj.getHours(): "0" + (dateObj.getHours()); strDate += ":"; strDate += (dateObj.getMinutes()>9)? dateObj.getMinutes() : "0" + dateObj.getMinutes(); strDate += ":"; strDate += (dateObj.getSeconds()>9)? dateObj.getSeconds() : "0" + dateObj.getSeconds(); return strDate; } /******************************************************************** function : trim(str) purpose : 去除字符串中的首尾空格 parameters : str return : ********************************************************************/ /*function trim(str) { str = str.replace(/(^\s*)|(\s*$)/g, ""); return str }*/ /******************************************************************** function : clearInput() purpose : 清空所有的文本输入框。包括,