以前项目中常用的校验函数,贴于此,供以后备用.
/*------------------------------------------| | Common Functions | |-------------------------------------------| | @Author: jiang zhengjun | | @version 1.1, 2008-09-22 modi | |------------------------------------------*/ /** * 根据指定的id获取第一个对象引用 * @param web组件的name 或 Id * @return 返回具有同样id或name属性集合中的第一个对象,如果不存在,则返回null * 注:如果有相同的id,则返回集合中的第一个对象引用, * 如果不同的web组件的name属性与id属性相同,不管其放置 * 顺序,都会返回最前的一个引用(实际上用id还是name指定结果都一样) */ function $(id) { return document.getElementById(id); } /** * 根据指定的name获取第一个对象引用 * @param web组件的name 或 Id * @return 返回具有同样name或id属性集合中的第一个对象 * 注:如果有相同的name,则返回集合中的第一个对象引用,如果不存返回null * 如果不同的web组件的name属性与id属性相同,不管其放置 * 顺序,返回的集合里元素顺序与编程顺序一致 */ function getObjByName(name) { if(document.getElementsByName(name).length==0){ return null; }else{ return document.getElementsByName(name)[0]; } } /** * 根据指定的name获取相同属性值的对象引用集合 * @param web组件的name 或 Id * @return 返回具有同样name或id属性集合中的第一个对对象,如果不存在 则返回长度为零的数组 * 注:返回的集合里元素顺序与编程顺序一致 */ function getObjsByName(name) { return document.getElementsByName(name); } /** * 根据指定的标签名获取相同标签名的对象引用集合 * @param web组件的tagName * @return 返回具有同样tagName元素集合,如果不存在 则返回长度为零的数组 */ function getObjsByTagName(tagName) { return document.getElementsByTagName(name); } /** * 根据指定的标签名获取相同标签名的集合中第一个对象引用 * @param web组件的tagName * @return 返回具有同样tagName元素集合中的第一个对象 * 注:如果有相同的tagName,则返回集合中的第一个对象引用, 如果不存,则返回null */ function getObjByTagName(name) { if(document.getElementsByTagName(name).length==0){ return null; }else{ return document.getElementsByTagName(name)[0]; } } /** * method:display layer * @param id element id */ function divDisp(id) { $(id).style.display = 'inline'; } /** * method:hide layer * @param id element id */ function divHid(id) { $(id).style.display = 'none'; } /** * method:去除字串的左空格 * @param str */ function lTrim(str) { var len = str.length; if (len !=0 && str.charAt(0) == ' ') { str = lTrim(str.slice(1)); } return str; } /** * method:去除字串的右空格 * @param str */ function rTrim(str) { var len = str.length; if (len !=0 && str.charAt(len - 1) == ' ') { str = str.slice(0, len - 1); str = rTrim(str); } return str; } /** * method:去除字串的两端空格 * @param str */ function trim(str) { return lTrim(rTrim(str)); } /** * method:得到字符串占字节的大小 * ¤§¨°±·×àáèéêìíòó÷ùúü 这些字符的编码在0-255间,但占二个字节 * @param str */ function getStringBinarySize(str) { var reg = /([^\u0000-\u00ff]|[¤§¨°±·×àáèéêìíòó÷ùúü])/g; var enLen = 0; var zhLen = 0; var binaryCount = 0; if(str.match(reg)){ zhLen = str.match(reg).length; enLen = str.length - zhLen; binaryCount = enLen + (zhLen << 1); }else{ binaryCount = str.length; } return binaryCount; } /** * 功能:获取焦点并选中 * 返回:void */ function focusAndSelect(obj){ var stype = obj.type; if(stype){ if ((stype.toLowerCase() == "password") || (stype.toLowerCase() == "text") || (stype.toLowerCase() == "textarea")){ //obj.select(); obj.focus(); }else{ obj.focus(); } } } /** * 功能:判断是否为空 * 参数:label 出错提示信息 * 参数:obj 被检查的页面元素对象 * 参数:isalert 是否弹出提示框 true:错误时弹出,false:错误时不提示 * 返回:若为空返回true,否则返回 false */ function isEmpty (obj,label) { var str = delSpaceChar(obj); obj.value = str; if (str.length == 0) { if(label != undefined && label != null) { alert(label); focusAndSelect(obj); } return true; } return false; } /** * 功能:删除字符串前后空白字符 * 参数:obj 被删除除的元素对象 * 返回:若不满足条件返回 false;否则返回 true */ function delSpaceChar(obj){ var str = obj.value; var regFirst = /^[\s ]{1,}/; var regLast = /[\s ]{1,}$/; str = str.replace(regFirst,""); str = str.replace(regLast,""); obj.value = str; return str; } /** * 功能:是否为数字字符串 * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:minlen 允许的最小字符长度 * 参数:maxlen 允许的最大字符长度 * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isNumChar(label1,obj,minlen,maxlen,label2,allowempty) { var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2)){ return false; } var regStr = "^[0-9]{"+ minlen + "," + maxlen + "}$"; var reg = new RegExp(regStr); if(!reg.test(str)){ alert(label1); focusAndSelect(obj); return false; } return true; } /** * 功能:是否为整数(包括负整数、零、正整数) * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:min 允许的最小值 * 参数:max 允许的最大值 * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isInt(label1,obj,min,max,label2,allowempty){ var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } var reg = /^((-?([1-9])([0-9]*))|0)$/; if(!reg.test(str) || parseInt(str) < min || parseInt(str) > max){ alert(label1); focusAndSelect(obj); return false; } return true; } /** * 功能:是否为有效小数(验证是否为整数时最好用isInt()方法) * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:min 允许的最小值 * 参数:max 允许的最大值 * 参数:precision 如果是小数,则为小数位的位数 * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isNum(label1,obj,min,max,precision,label2,allowempty){ var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } var regStr = "^((-?([1-9])([0-9]*)(\.[0-9]{1,"+ precision + "})?)|(0(\.[0-9]{1," + precision + "})?)|(-0(\.[0-9]{1," + precision + "})+))$"; var reg = new RegExp(regStr); if(!reg.test(str) || parseFloat(str) < min || parseFloat(str) > max){ alert(label1); focusAndSelect(obj); return false; } return true; } /** * 功能:非法字符检测 * 不能含有以下特殊字符|&">\<',且长度在minlen 与maxlen之间 * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:minlen 允许的最小字符长度 * 参数:maxlen 允许的最大字符长度 * 参数:allowempty 是否允许为空 false:不允许为空,true:允许为空 * 参数:label2 为空时出错提示信息 * 返回:若是非法字符返回 true;否则返回 false */ function isIllegalChar(label1,obj,minlen,maxlen,label2,allowempty) { var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return false; } if(isEmpty(obj,label2,true)){ return true; } var rep =/[|&\">\\<\']/g; if(len < minlen || len > maxlen || str.match(rep)) { alert(label1); focusAndSelect(obj); return true; } return false; } /** * 功能:是否为合法的邮件地址 * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:minlen 允许的最小字符长度 * 参数:maxlen 允许的最大字符长度 * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isEmail(label1,obj,minlen,maxlen,label2,allowempty) { var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } var reg =/^(?:\w+\.?)*\w+@(?:\w+\.?)*\w+$/; if(len < minlen || len > maxlen ){ alert(label1); focusAndSelect(obj); return false; } if(!reg.test(str)){ alert(label1); focusAndSelect(obj); return false; } return true; } /** * 功能:是否合法IP * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isValideIP(label1,obj,label2,allowempty) { var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } var reg =/^(([1-9])|([1-9]\d)|1\d\d|2[0-4][0-9]|25[0-5])\.((([0-9])|([1-9]\d)|1\d\d|2[0-4][0-9]|25[0-5])\.){2}(([0-9])|([1-9]\d)|1\d\d|2[0-4][0-9]|25[0-5])$/; if(!reg.test(str)){ alert(label1); focusAndSelect(obj); return false; } return true; } /** * 功能:验证日期合法性 1900-3000年 * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:formatStr 日期格式 形如 YYYY-MM-DD MM-DD-YYYY YYYY/MM/DD MM/DD/YYYY * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isValidDate(label1,obj,formatStr,label2,allowempty) { var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } formatStr = formatStr.toUpperCase(); var yearRegStr = "((19[0-9]{2})|(2[0-9]{3})|(3000))"; var monthRegStr = "((0[0-9])|(1[0-2]))"; var dayRegStr = "((0[0-9])|([12][0-9]|(3[01])))"; var regStr = "^"+formatStr.replace("YYYY",yearRegStr).replace("MM",monthRegStr).replace("DD",dayRegStr)+"$"; var reg = new RegExp(regStr); if(!reg.test(str)){ alert(label1); focusAndSelect(obj); return false } var year =str.substring(formatStr.indexOf("YYYY"),formatStr.indexOf("YYYY")+4); var month = str.substring(formatStr.indexOf("MM"),formatStr.indexOf("MM")+2); var day = str.substring(formatStr.indexOf("DD"),formatStr.indexOf("DD")+2); //alert(year + " " + month + " " + day); if ((month==4 || month==6 || month==9 || month==11) && day==31) { alert(label1); focusAndSelect(obj); return false; } if (month==2) { var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0)); if (day>29 || ((day==29) && (!isleap))) { alert(label1); focusAndSelect(obj); return false; } } return true; } /** * 功能:验证日期时间合法性 * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:formatStr 日期格式 形如 YYYY-MM-DD HH:MM:SS; MM/DD/YYYY HH:MM:SS * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isValidDateTime(label1,obj,formatStr,label2,allowempty){ var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } var dateStr = str.split(" ")[0]; var timeStr = str.split(" ")[1]; formatStr = formatStr.toUpperCase(); var dateFormatStr = formatStr.split(" ")[0]; var timeFormatStr = formatStr.split(" ")[1]; //----date validator var yearRegStr = "((19[0-9]{2})|(2[0-9]{3})|(3000))"; var monthRegStr = "((0[0-9])|(1[0-2]))"; var dayRegStr = "((0[0-9])|([12][0-9]|(3[01])))"; var regStr = "^"+dateFormatStr.replace("YYYY",yearRegStr).replace("MM",monthRegStr).replace("DD",dayRegStr)+"$"; var reg = new RegExp(regStr); if(!reg.test(dateStr)){ alert(label1); focusAndSelect(obj); return false } var year =dateStr.substring(dateFormatStr.indexOf("YYYY"),dateFormatStr.indexOf("YYYY")+4); var month = dateStr.substring(dateFormatStr.indexOf("MM"),dateFormatStr.indexOf("MM")+2); var day = dateStr.substring(dateFormatStr.indexOf("DD"),dateFormatStr.indexOf("DD")+2); if ((month==4 || month==6 || month==9 || month==11) && day==31) { alert(label1); focusAndSelect(obj); return false; } if (month==2) { var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0)); if (day>29 || ((day==29) && (!isleap))) { alert(label1); focusAndSelect(obj); return false; } } //----time validator var reg = /^(([0-1][0-9])|(2[0-3]))(:([0-5][0-9])){2}$/; if(!reg.test(timeStr)){ alert(label1); focusAndSelect(obj); return false } return true; } /** * 功能:是否是合法时间 HH:MM:SS * 参数:label1 非空时出错提示信息 * 参数:obj 被检查的元素对象 * 参数:allowempty 是否允许为空 false不允许为空,true允许为空 * 参数:label2 为空时出错提示信息 * 返回:若不满足条件返回 false;否则返回 true */ function isValideTime(label1,obj,label2,allowempty) { var str = delSpaceChar(obj); var len = str.length; if(allowempty && len==0){ return true; } if(isEmpty(obj,label2,true)){ return false; } var reg = /^(([0-1][0-9])|(2[0-3]))(:([0-5][0-9])){2}$/; if(!reg.test(str)){ alert(label1); focusAndSelect(obj); return false } return true; } /** * 功能:字符串到日期字符串 如:YYYYMMDD->YYYY-MM-DD或MM/DD/YYYY * 参数:str 被转换的字符串 * 参数:formatStr 日期格式 形如 YYYY-MM-DD ; MM/DD/YYYY * 返回:格式化后的字符串 */ function str2DateStr(str,formatStr){ var year = str.substring(0,4); var month = str.substring(4,6); var day = str.substring(4,6); formatStr = formatStr.toUpperCase(); return formatStr.replace("YYYY",year).replace("MM",month).replace("DD",day) } /** * 功能:字符串到日期时间字符串 如:YYYYMMDDHHMMSS->YYYY-MM-DD HH:MM:SS或MM/DD/YYYY HH:MM:SS * 参数:str 被转换的字符串 * 参数:formatStr 日期格式 形如 YYYY-MM-DD HH:MM:SS; MM/DD/YYYY HH:MM:SS * 返回:格式化后的字符串 */ function str2DateTimeStr(str,formatStr){ var year = str.substring(0,4); var month = str.substring(4,6); var day = str.substring(6,8); var hour = str.substring(8,10); var minute = str.substring(10,12); var second = str.substring(12,14); formatStr = formatStr.toUpperCase(); return formatStr.replace("YYYY",year).replace("MM",month).replace("DD",day).replace("HH",hour).replace("MM",minute).replace("SS",second); } /** * 功能:日期字符串到普通字符串 如:MM/DD/YYYY-> YYYYMMDD * 参数:str 被转换的日期字符串 * 参数:formatStr被转换的日期格式 * 返回:格式化后的字符串 */ function dateStr2Str(str,formatStr){ formatStr = formatStr.toUpperCase(); var year =str.substring(formatStr.indexOf("YYYY"),formatStr.indexOf("YYYY")+4); var month = str.substring(formatStr.indexOf("MM"),formatStr.indexOf("MM")+2); var day = str.substring(formatStr.indexOf("DD"),formatStr.indexOf("DD")+2); return ''+year+month+day; } /** * 功能:日期时间字符串到普通字符串 如:MM/DD/YYYY HH:MM:SS-> YYYYMMDDHHMMSS * 参数:str 被转换的日期时间字符串 * 参数:formatStr被转换的日期时间格式 * 返回:格式化后的字符串 */ function dateTimeStr2Str(str,formatStr){ var dateStr = str.split(" ")[0]; var timeStr = str.split(" ")[1]; formatStr = formatStr.toUpperCase(); var dateFormatStr = formatStr.split(" ")[0]; var timeFormatStr = formatStr.split(" ")[1]; var year =dateStr.substring(dateFormatStr.indexOf("YYYY"),dateFormatStr.indexOf("YYYY")+4); var month = dateStr.substring(dateFormatStr.indexOf("MM"),dateFormatStr.indexOf("MM")+2); var day = dateStr.substring(dateFormatStr.indexOf("DD"),dateFormatStr.indexOf("DD")+2); return ''+year+month+day+timeStr.replace(/:/g,""); } /** * 功能:选择所有复选框 * 参数:obj 全选复选框 */ function checkAll(obj){ var form = obj.form; var allElems = form.elements; for(var i = 0; i < allElems.length; i++){ if(allElems[i].type == "checkbox"){ if(obj.checked){ allElems[i].checked = true; }else{ allElems[i].checked = false; } } } } /** * 功能:点击其他复选框全选复选框是否被选中 * 参数:obj 点击的复选框 * 参数:allCheckObj 全选复选框 */ function allBeCheck(obj,allCheckObj){ var form = obj.form; var allElems = form.elements; var checkBoxCount = 0; var beCheckedCount = 0; for(var i = 0; i < allElems.length; i++){ if(allElems[i].type == "checkbox" && allElems[i].name!=allCheckObj.name){ checkBoxCount++; if(allElems[i].checked){ beCheckedCount++; } } } if(checkBoxCount == beCheckedCount){ allCheckObj.checked = true; }else{ allCheckObj.checked = false; } } /** * 功能:正则表达试验证 * 参数:regStr 正则式 * 参数:value 被验证的值 */ function regExpTest(regStr,value){ var reg = new RegExp(regStr); return reg.test(value); } /** * 功能:输入元素回车自动跳到下一个输入元素, * 且在表单最后一个输入框中回车时自动提交表单 */ function keydown(){ if(event.srcElement.type == undefined){ return; } var type = event.srcElement.type.toLowerCase(); if(event.keyCode!=13 || type=='button' || type=='submit' || type=='reset' || type=='textarea' || type==''){ return; } if(event.srcElement.nextSibling != null && event.srcElement.nextSibling.type=='select-one' && document.getElementById(SELECT_DIV) && document.getElementById(SELECT_DIV).style.display=='inline'){ event.returnValue=false; return; } var srcForm = event.srcElement.form; if(srcForm == undefined || srcForm == null){ return ; } var srcForm = event.srcElement.form; var srcElementNext = null; var allElems = srcForm.elements; for(var i = 0; i < allElems.length; i++){ if(event.srcElement == allElems[i]){ if(!isLastElem(allElems,i+1)){ event.keyCode=9; break; }else { if(event.srcElement.type=='select-one'){ var subButton = findSubmitButton(allElems,i); if(subButton !=null){ subButton.focus(); } } } } } } function findSubmitButton(allElems,index){ for(var i = index; i < allElems.length; i++){ if(allElems[i].type=='submit'){ return allElems[i]; } } return null; } function isLastElem(allElems,index){ if(index >=allElems.length || allElems[index].type=="submit" ){ return true; } for(var i = index; i < allElems.length; i++){ var tempObj = allElems[i]; while(tempObj != window.document.body){ //alert(tempObj.outerHTML); if(tempObj.style.display != 'none'){ tempObj=tempObj.parentElement; }else{ //alert(tempObj.id + " " + tempObj.style.display); return isLastElem(allElems,i+1); } } if(tempObj == window.document.body){ return false; } } } //自动绑定按键事件 window.document.onkeydown = keydown; /** * 功能:不可用或只读时web组件改变颜色 */ function disabledElemtColor(){ var allElems = document.all; for(var i = 0; i < allElems.length; i++){ if(allElems[i].type &&(allElems[i].type == "textarea" || allElems[i].type == "password" ||allElems[i].type == "text" || allElems[i].type == "select-one") &&(allElems[i].readOnly && (allElems[i].readOnly==true || allElems[i].readOnly == 'readonly') ||(allElems[i].disabled && (allElems[i].disabled==true || allElems[i].disabled == 'disabled')))){ allElems[i].style.backgroundColor='#C0C0C0'; allElems[i].ondragstart = function () { return false; } } } } disabledElemtColor(); /** * method:获取异步请求 */ function getRequest() { var request; if (window.XMLHttpRequest) { request = new XMLHttpRequest(); // if (request.overrideMimeType) { // request.overrideMimeType("text/xml"); // } } else { if (window.ActiveXObject) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e1) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return e2.message; } } } } return request; }
function isChinese(){ //匹配汉字的正则表达式:[\u4e00-\u9fa5] }