轉(zhuǎn)載聲明:版權(quán)規(guī)文章原創(chuàng)作者所有
轉(zhuǎn)載時(shí)間:2007年08月07日 轉(zhuǎn)載作者:pablo3518
文件名稱:check.js 說明:JavaScript腳本,用于檢查網(wǎng)頁提交表單的輸入數(shù)據(jù) 版本:1.0 */
/* 用途:校驗(yàn)ip地址的格式 輸入:strIP:ip地址 返回:如果通過驗(yàn)證返回true,否則返回false;
*/ function isIP(strIP) { if (isNull(strIP)) return false; var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正則表達(dá)式 if(re.test(strIP)) { if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true; } return false; }
/* 用途:檢查輸入字符串是否為空或者全部都是空格 輸入:str 返回: 如果全是空返回true,否則返回false */ function isNull( str ){ if ( str == "" ) return true; var regu = "^[ ]+$"; var re = new RegExp(regu); return re.test(str); }
/* 用途:檢查輸入對(duì)象的值是否符合整數(shù)格式 輸入:str 輸入的字符串 返回:如果通過驗(yàn)證返回true,否則返回false
*/ function isInteger( str ){ var regu = /^[-]{0,1}[0-9]{1,}$/; return regu.test(str); }
/* 用途:檢查輸入手機(jī)號(hào)碼是否正確 輸入: s:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function checkMobile( s ){ var regu =/^[1][3][0-9]{9}$/; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } }
/* 用途:檢查輸入字符串是否符合正整數(shù)格式 輸入: s:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isNumber( s ){ var regu = "^[0-9]+$"; var re = new RegExp(regu); if (s.search(re) != -1) { return true; } else { return false; } }
/* 用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù) 輸入: s:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isDecimal( str ){ if(isInteger(str)) return true; var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/; if (re.test(str)) { if(RegExp.$1==0&&RegExp.$2==0) return false; return true; } else { return false; } }
/* 用途:檢查輸入對(duì)象的值是否符合端口號(hào)格式 輸入:str 輸入的字符串 返回:如果通過驗(yàn)證返回true,否則返回false
*/ function isPort( str ){ return (isNumber(str) && str<65536); }
/* 用途:檢查輸入對(duì)象的值是否符合E-Mail格式 輸入:str 輸入的字符串 返回:如果通過驗(yàn)證返回true,否則返回false
*/ function isEmail( str ){ var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/; if(myReg.test(str)) return true; return false; }
/* 用途:檢查輸入字符串是否符合金額格式 格式定義為帶小數(shù)的正數(shù),小數(shù)點(diǎn)后最多三位 輸入: s:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isMoney( s ){ var regu = "^[0-9]+[\.][0-9]{0,3}$"; var re = new RegExp(regu); if (re.test(s)) { return true; } else { return false; } } /* 用途:檢查輸入字符串是否只由英文字母和數(shù)字和下劃線組成 輸入: s:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isNumberOr_Letter( s ){//判斷是否是數(shù)字或字母
var regu = "^[0-9a-zA-Z\_]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /* 用途:檢查輸入字符串是否只由英文字母和數(shù)字組成 輸入: s:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isNumberOrLetter( s ){//判斷是否是數(shù)字或字母
var regu = "^[0-9a-zA-Z]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } } /* 用途:檢查輸入字符串是否只由漢字、字母、數(shù)字組成 輸入: value:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isChinaOrNumbOrLett( s ){//判斷是否是漢字、字母、數(shù)字組成
var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$"; var re = new RegExp(regu); if (re.test(s)) { return true; }else{ return false; } }
/* 用途:判斷是否是日期 輸入:date:日期;fmt:日期格式 返回:如果通過驗(yàn)證返回true,否則返回false */ function isDate( date, fmt ) { if (fmt==null) fmt="yyyyMMdd"; var yIndex = fmt.indexOf("yyyy"); if(yIndex==-1) return false; var year = date.substring(yIndex,yIndex+4); var mIndex = fmt.indexOf("MM"); if(mIndex==-1) return false; var month = date.substring(mIndex,mIndex+2); var dIndex = fmt.indexOf("dd"); if(dIndex==-1) return false; var day = date.substring(dIndex,dIndex+2); if(!isNumber(year)||year>"2100" || year< "1900") return false; if(!isNumber(month)||month>"12" || month< "01") return false; if(day>getMaxDay(year,month) || day< "01") return false; return true; }
function getMaxDay(year,month) { if(month==4||month==6||month==9||month==11) return "30"; if(month==2) if(year%4==0&&year%100!=0 || year%400==0) return "29"; else return "28"; return "31"; }
/* 用途:字符1是否以字符串2結(jié)束 輸入:str1:字符串;str2:被包含的字符串 返回:如果通過驗(yàn)證返回true,否則返回false
*/ function isLastMatch(str1,str2) { var index = str1.lastIndexOf(str2); if(str1.length==index+str2.length) return true; return false; }
/* 用途:字符1是否以字符串2開始 輸入:str1:字符串;str2:被包含的字符串 返回:如果通過驗(yàn)證返回true,否則返回false
*/ function isFirstMatch(str1,str2) { var index = str1.indexOf(str2); if(index==0) return true; return false; }
/* 用途:字符1是包含字符串2 輸入:str1:字符串;str2:被包含的字符串 返回:如果通過驗(yàn)證返回true,否則返回false
*/ function isMatch(str1,str2) { var index = str1.indexOf(str2); if(index==-1) return false; return true; }
/* 用途:檢查輸入的起止日期是否正確,規(guī)則為兩個(gè)日期的格式正確, 且結(jié)束如期>=起始日期 輸入: startDate:起始日期,字符串 endDate:結(jié)束如期,字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function checkTwoDate( startDate,endDate ) { if( !isDate(startDate) ) { alert("起始日期不正確!"); return false; } else if( !isDate(endDate) ) { alert("終止日期不正確!"); return false; } else if( startDate > endDate ) { alert("起始日期不能大于終止日期!"); return false; } return true; }
/* 用途:檢查輸入的Email信箱格式是否正確 輸入: strEmail:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function checkEmail(strEmail) { //var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; if( emailReg.test(strEmail) ){ return true; }else{ alert("您輸入的Email地址格式不正確!"); return false; } }
/* 用途:檢查輸入的電話號(hào)碼格式是否正確 輸入: strPhone:字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function checkPhone( strPhone ) { var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/; var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/; var prompt = "您輸入的電話號(hào)碼不正確!" if( strPhone.length > 9 ) { if( phoneRegWithArea.test(strPhone) ){ return true; }else{ alert( prompt ); return false; } }else{ if( phoneRegNoArea.test( strPhone ) ){ return true; }else{ alert( prompt ); return false; }
} }
/* 用途:檢查復(fù)選框被選中的數(shù)目 輸入: checkboxID:字符串 返回: 返回該復(fù)選框中被選中的數(shù)目
*/
function checkSelect( checkboxID ) { var check = 0; var i=0; if( document.all(checkboxID).length > 0 ) { for( i=0; i<document.all(checkboxID).length; i++ ) { if( document.all(checkboxID).item( i ).checked ) { check += 1; }
} }else{ if( document.all(checkboxID).checked ) check = 1; } return check; }
function getTotalBytes(varField) { if(varField == null) return -1;
var totalCount = 0; for (i = 0; i< varField.value.length; i++) { if (varField.value.charCodeAt(i) > 127) totalCount += 2; else totalCount++ ; } return totalCount; }
function getFirstSelectedValue( checkboxID ){ var value = null; var i=0; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ){ if( document.all(checkboxID).item( i ).checked ){ value = document.all(checkboxID).item(i).value; break; } } } else { if( document.all(checkboxID).checked ) value = document.all(checkboxID).value; } return value; } function getFirstSelectedIndex( checkboxID ){ var value = -2; var i=0; if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ) { if( document.all(checkboxID).item( i ).checked ) { value = i; break; } } } else { if( document.all(checkboxID).checked ) value = -1; } return value; } function selectAll( checkboxID,status ){
if( document.all(checkboxID) == null) return;
if( document.all(checkboxID).length > 0 ){ for( i=0; i<document.all(checkboxID).length; i++ ){
document.all(checkboxID).item( i ).checked = status; } } else { document.all(checkboxID).checked = status; } }
function selectInverse( checkboxID ) { if( document.all(checkboxID) == null) return;
if( document.all(checkboxID).length > 0 ) { for( i=0; i<document.all(checkboxID).length; i++ ) { document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked; } } else { document.all(checkboxID).checked = !document.all(checkboxID).checked; } } function checkDate( value ) { if(value==‘‘) return true; if(value.length!=8 || !isNumber(value)) return false; var year = value.substring(0,4); if(year>"2100" || year< "1900") return false; var month = value.substring(4,6); if(month>"12" || month< "01") return false;
var day = value.substring(6,8); if(day>getMaxDay(year,month) || day< "01") return false;
return true; }
/* 用途:檢查輸入的起止日期是否正確,規(guī)則為兩個(gè)日期的格式正確或都為空 且結(jié)束日期>=起始日期 輸入: startDate:起始日期,字符串 endDate: 結(jié)束日期,字符串 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function checkPeriod( startDate,endDate ) { if( !checkDate(startDate) ) { alert("起始日期不正確!"); return false; } else if( !checkDate(endDate) ) { alert("終止日期不正確!"); return false; } else if( startDate > endDate ) { alert("起始日期不能大于終止日期!"); return false; } return true; }
/* 用途:檢查證券代碼是否正確 輸入: secCode:證券代碼 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function checkSecCode( secCode ) { if( secCode.length !=6 ){ alert("證券代碼長(zhǎng)度應(yīng)該為6位"); return false; }
if(!isNumber( secCode ) ){ alert("證券代碼只能包含數(shù)字");
return false; } return true; }
/**************************************************** function:cTrim(sInputString,iType) description:字符串去空格的函數(shù) parameters:iType:1=去掉字符串左邊的空格
2=去掉字符串左邊的空格 0=去掉字符串左邊和右邊的空格 return value:去掉空格的字符串 ****************************************************/ function cTrim(sInputString,iType) { var sTmpStr = ‘ ‘; var i = -1;
if(iType == 0 || iType == 1) { while(sTmpStr == ‘ ‘) { ++i; sTmpStr = sInputString.substr(i,1); } sInputString = sInputString.substring(i); }
if(iType == 0 || iType == 2) { sTmpStr = ‘ ‘; i = sInputString.length; while(sTmpStr == ‘ ‘) { --i; sTmpStr = sInputString.substr(i,1); } sInputString = sInputString.substring(0,i+1); } return sInputString; }
/* ------------------------------------------------------------------------------- 說明:JavaScript腳本,驗(yàn)證表單中的數(shù)據(jù)項(xiàng) begin -------------------------------------------------------------------------------
*/ function checkForm(objFrm){ var len = 0; len = objFrm.elements.length;
var i = 0; var objCheck; //文本框 for(i = 0; i < len; i ++){ objCheck = objFrm.elements[i]; if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){ return false; } } //下拉框 for(i = 0; i < len; i ++){ objCheck = objFrm.elements[i]; if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){ return false;
} } //時(shí)間段有效 if( f_checkStartAndEndDate(objFrm) == false) return false;
return true; } function f_checkSelectValid(obj){ //alert("check select"); if(obj.options.length <= 0){ alert("下拉選框無數(shù)據(jù)!"); return false;
} return true; } function f_checkStartAndEndDate(frm){ var len = frm.elements.length; if(len == null && len == 0) return true; var i=0; var temp; var objCheck; var objStartDate; var objEndDate; //alert("start date period check"); try{ for(i=0; i< len ; i++){ objCheck = frm.elements[i]; temp = objCheck.name; if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 ) objStartDate = objCheck; if( temp.indexOf("endDate") > 0 ) objEndDate = objCheck;
} //alert(objStartDate.value); //alert(objEndDate.value); if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){ return true; } return checkTwoDate(objStartDate.value, objEndDate.value);
//alert("end date period check"); }catch(E){} return true; }
function f_checkTextValid(obj){ //不能為空 if(obj.getAttribute("isNeed") != null){ if(f_isNotNull(obj) == false) return false; } //不能超過長(zhǎng)度 if(obj.getAttribute("maxlength") != null){ if(f_checkLength(obj) == false) return false; } var checkType =""; checkType = obj.getAttribute("checkType"); if(checkType==null||checkType=="") return true; // if (checkType.indexOf("number") >=0){ if(f_isNumber(obj) == false) return false; if(f_checkNumType(obj,checkType) == false) return false; } // if (checkType.indexOf("positive") >=0){ if(f_isNumber(obj) == false) return false; if(f_isPositive(obj)==false) return false; if(f_checkNumType(obj,checkType) == false) return false;
} if (checkType.indexOf("date") >=0){ if(f_checkDate(obj) == false) return false;
}
/* switch(checkType){ case "number": if(f_isNumber(obj) == false) return false;break; case "date": if(f_checkDate(obj) == false) return false;break; default: } */ return true; }
function f_isNotNull(obj){ if(obj.value == ""){ f_alert(obj, " 不允許為空值!"); return false; } return true; }
function f_isNumber(obj){ if(isNaN(obj.value)){ f_alert(obj," 應(yīng)為數(shù)值類型"); return false;
} return true;
} function f_checkDate(obj) { if(checkDate(obj.value) ==false){ f_alert(obj," 不是合法日期格式!"); return false;
} return true; }
function f_checkLength(obj){ if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){ f_alert(obj," 超出長(zhǎng)度限制!"); return false;
} return true;
}
function f_alert(obj,alertStr){ var fielName = obj.getAttribute("fieldName"); if(fielName == null) fielName = ""; alert(fielName + "\n" +alertStr); obj.select(); obj.focus(); }
function f_checkNumType(obj, numType){ //假設(shè): 已經(jīng)進(jìn)行數(shù)字類型判斷
var strTemp; var numpric; var numLen; var strArr; var defaultLen = 19; var defaultpric = 5;
try{ if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric); if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric); strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 ); if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric); strArr = strTemp.split(",");
numLen = Math.abs( strArr[0] ); numpric = Math.abs( strArr[1] );
return f_checkNumLenPrec(obj,numLen, numpric); }catch(e){ alert("in f_checkNumType = " + e); return f_checkNumLenPrec(obj,defaultLen, defaultpric); }
}
function f_checkNumLenPrec(obj, len, pric){ var numReg; var value = obj.value; var strValueTemp, strInt, strDec;
//alert(value + "=====" + len + "====="+ pric); try{
numReg =/[\-]/; strValueTemp = value.replace(numReg, ""); strValueTemp = strValueTemp.replace(numReg, ""); //整數(shù) if(pric==0){ numReg =/[\.]/; //alert(numReg.test(value)); if(numReg.test(value) == true){ f_alert(obj, "輸入必須為整數(shù)類型!"); return false;
}
}
if(strValueTemp.indexOf(".") < 0 ){ //alert("lennth==" + strValueTemp);
if(strValueTemp.length >( len - pric)){ f_alert(obj, "整數(shù)位不能超過"+ (len - pric) +"位"); return false; }
}else{ strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") );
//alert("lennth==" + strInt);
if(strInt.length >( len - pric)){ f_alert(obj, "整數(shù)位不能超過"+ (len - pric) +"位"); return false; }
strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length );
//alert("pric==" + strDec);
if(strDec.length > pric){ f_alert(obj, "小數(shù)位不能超過"+ pric +"位"); return false; }
}
return true; }catch(e){ alert("in f_checkNumLenPrec = " + e); return false; }
}
function f_isPositive(obj){ var numReg =/[\-]/; if(numReg.test(obj.value) == true){ f_alert(obj, "必須為正數(shù)!"); return false; } return true;
} /* function selectedCheckboxCount(form) 功能說明:對(duì)Form中選中的可選項(xiàng)計(jì)數(shù)
參數(shù)說明: form:指定的表單 */ function selectedCheckboxCount(form){ var length =0; var i=0; var count =0; eles = form.elements; while(i<eles.length){ obj= eles.item(i); //type = obj.attributes.item("type").nodeValue;
type = obj.type; if(type == "checkbox"){ if(obj.checked){ count++; } } i++; } return count; }
//得到字節(jié)長(zhǎng)度 function getByteLen(str) { var l = str.length; var n = l; for ( var i=0; i<l; i++ )
if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 ) n=n+1; return n }
/* 說明: 1.清除表格中的數(shù)據(jù)(0.0 和 0) 2.如果cell中沒有數(shù)據(jù),則自動(dòng)加上一個(gè)空格 3.清除空白行的checkbox
參數(shù): clearzero:是否清除"0"、"0.0",false不清除、true清除(默認(rèn)為true) tablename:要清除的表格名字,默認(rèn)為sortTable */ function clear_table(clearzero,tablename) { var tobject; if(tablename==null) tobject=gmobj("sortTable"); else tobject=gmobj(tablename); //如果table未定義,則不進(jìn)行過濾
if(tobject==null) return;
//如果函數(shù)調(diào)用參數(shù)為空,表示要清除0、0.0;反之,不要清除0、0.0。 var clear = (clearzero==null)?true:clearzero;
//清除0、0.0,填補(bǔ)空格 var rows = tobject.rows; var j=0; for(var i=0;i<rows.length;i++) { //取得第一個(gè)cell的屬性clear,如果為1,表示該行沒有數(shù)據(jù),則清除該行所有數(shù)據(jù)
while(tobject.rows[i].cells[j] != null) { if(clear) { if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="") tobject.rows[i].cells[j].innerText=" "; } else { if (tobject.rows[i].cells[j].innerHTML=="") tobject.rows[i].cells[j].innerText=" "; } j++; } j=0;
} return true; }
function gmobj(mtxt) /* Get object by object name */ { if (document.getElementById) { m=document.getElementById(mtxt); } else if (document.all) { m=document.all[mtxt]; } else if (document.layers) { m=document.layers[mtxt]; } return m; } /* ------------------------------------------------------------------------------- 說明:JavaScript腳本,驗(yàn)證表單中的數(shù)據(jù)項(xiàng) end -------------------------------------------------------------------------------
*/
/* 用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù)(并且滿足規(guī)定的精度) 輸入:str:字符串 l:總位數(shù) d:小數(shù)點(diǎn)后位數(shù) 返回: 如果通過驗(yàn)證返回true,否則返回false
*/ function isDecimal( str,l,d ){ if(isInteger(str)) { if (l==null) return true; if (str<0) l--; if (str.length<=l) return true; }
var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/; if (re.test(str)) { if (l==null) return true; if (d==null) d=0; if(RegExp.$1==0&&RegExp.$2==0) return false; if (RegExp.$1.length+RegExp.$2.length<=l && RegExp.$2.length<=d) return true; } return false; } |
|