var aCity={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:"国外"} //此文件提供WEB应用程序中常用的javascript方法。 //////////////////////////////////////////////////////////////////////////////// /* *--------------- 客户端表单通用验证CheckForm(oForm) ----------------- * 功能:通用验证所有的表单元素. * 使用: * <form name="form1" onsubmit="return CheckForm(this)"> * <input type="text" name="id" check="^/S+___FCKpd___0quot; warning="id不能为空,且不能含有空格"> * <input type="submit"> * </form> * author:wanghr100(灰豆宝宝.net) * email:wanghr100@126.com * update:19:28 2004-8-23 * 注意:写正则表达式时一定要小心.不要让"有心人"有空子钻. * 已实现功能: * 对text,password,hidden,file,textarea,select,radio,checkbox进行合法性验证 * 待实现功能:把正则表式写成个库. *--------------- 客户端表单通用验证CheckForm(oForm) ----------------- */ //////////////////////////////////////////////////////////////////////////////// //主函数 function CheckForm(oForm) { var els = oForm.elements; //遍历所有表元素 for(var i=0;i<els.length;i++) { //是否需要验证 if(els[i].check) { //取得验证的正则字符串 var sReg = els[i].check; //取得表单的值,用通用取值函数 var sVal = GetValue(els[i]); //字符串->正则表达式,不区分大小写 var reg = new RegExp(sReg,"i"); if(!reg.test(sVal)) { //验证不通过,弹出提示warning alert(els[i].warning); //该表单元素取得焦点,用通用返回函数 GoBack(els[i]) return false; } } } } //通用取值函数分三类进行取值 //文本输入框,直接取值el.value //单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个 //单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个 function GetValue(el) { //取得表单元素的类型 var sType = el.type; switch(sType) { case "text": case "hidden": case "password": case "file": case "textarea": return el.value; case "checkbox": case "radio": return GetValueChoose(el); case "select-one": case "select-multiple": return GetValueSel(el); } //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数 function GetValueChoose(el) { var sValue = ""; //取得第一个元素的name,搜索这个元素组 var tmpels = document.getElementsByName(el.name); for(var i=0;i<tmpels.length;i++) { if(tmpels[i].checked) { sValue += "0"; } } return sValue; } //取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数 function GetValueSel(el) { var sValue = ""; for(var i=0;i<el.options.length;i++) { //单选下拉框提示选项设置为value="" if(el.options[i].selected && el.options[i].value!="") { sValue += "0"; } } return sValue; } } //通用返回函数,验证没通过返回的效果.分三类进行取值 //文本输入框,光标定位在文本输入框的末尾 //单多选,第一选项取得焦点 //单多下拉菜单,取得焦点 function GoBack(el) { //取得表单元素的类型 var sType = el.type; switch(sType) { case "text": case "hidden": case "password": case "file": case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select(); case "checkbox": case "radio": var els = document.getElementsByName(el.name);els[0].focus(); case "select-one": case "select-multiple":el.focus(); } } //检测所有控件输入值的合法性 function checkAll(v_frm) { //var p_frm = document.forms[getNetuiTagName(v_frm)]; var p_frm = v_frm; var eCount = p_frm.elements.length; var v=""; var element_type = "";//控件类型,只针对下拉框 var discript = "";//输入值名称 var nullflag = "1";//是否可为空值,0-不可,1-可 var v_type = "s";//输入值类型,s-字符串, i-整数,f-浮点数,d-日期,e-邮件,c-身份证,p-邮编,phone -电话号码,m -移动电话,ip - ip地址,t - 短时间 var length = "";//输入值长度 var mins = "";//最小输入值 var maxs = "";//最大输入值 for(var i = 0; i < eCount; i++) { element_type = ""; discript = ""; v_type = "s"; length = ""; nullflag = "1"; maxs = ""; mins = ""; var e=p_frm.elements[i]; if (e.style.behavior == null || e.style.behavior == "") continue; parseTag(e.style.behavior); if (( v = getNextValue()) != null) { element_type = v; } if (( v = getNextValue()) != null) { discript = v; } if ((v = getNextValue()) != null) { nullflag = v; } if ((v = getNextValue()) != null) { v_type = v; } if ((v = getNextValue()) != null) { length = v; } if ((v = getNextValue()) != null) { mins = eval(v); } if ((v = getNextValue()) != null) { maxs = eval(v); } if (checkValidate(element_type,e, discript, v_type, length, nullflag, maxs, mins) == "0") return false; } return true; } //判断是否是纯空格字符串 function isSpaceStr(str) { var e; var result = false; for(var i=0;i<str.length;i++) { e = str.charAt(i); if(e != " ") { result = true; break; } } return result; } //判断是否是纯回车 function isEnter(str) { var len=str.length; if(len<1) return false; for(var i=0;i<len;i++){ str=str.replace("/n"," "); str=str.replace("/r"," "); if(str.substring(i,i+1)!=" "){ return true; } } return false; } /** * 检验用户指定的对象是否合法 * @param element 用户需要校验的对象 * @param discript 对象的描述 * @param type 对象的类型: * i 整数 * f 浮点 * s 字符 * d 日期 * e 邮件 * c 身份证 * p 邮编 * @param length 对象的最大长度 * @param type 能否为空: * 1 可以为空 * 0 不能为空 * @param maxs 最大值 * @param mins 最小值 * @return 全部条件合法返回true;否则返回false */ function checkValidate(element_type,element, discript, type, length, nullflag, maxs, mins) { if (element == "") { window.alert("函数调用出错,请输入控件!") return(0); } if (discript == "") { window.alert("函数调用出错,请输入控件描述!") return(0); } if (nullflag == 0) { if (element_type == "select") { if ( element.style.display=="block" || element.style.display=="") { if (element.value == "0") { window.alert("请选择" + discript + "!"); element.focus(); return(0); } } } else { if (element.value == "" || !isSpaceStr(element.value) || !isEnter(element.value)) { window.alert("请输入" + discript + "!"); element.focus(); return(0); } } }else { if(element.value=="") return(1); } if (type != "") { switch (type) { case "i"://整数 { if (element.value.length != 0 && isInteger(element.value) != true) { window.alert(discript + "必须输入整数!") element.focus(); return(0); }else if (element.value.length == 0 ){ //element.value = "0" ; } break; } case "f"://浮点数 { if (element.value.length != 0 && isNaN(element.value) == true) { window.alert(discript + "必须输入数字!") element.focus(); return(0); } if (element.value.length == 0 ){ //element.value = "0" ; } break; } case "s"://字符串 { break; } case "d"://日期 { if (element.value.length != 0 && isDate(element.value) == false) { window.alert(discript + "必须输入有效日期!(日期格式:yyyy-mm-dd)") element.focus(); return(0); } break; } case "e"://邮件 { if (element.value.length != 0 && isEmail(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "c"://身份证 { if (element.value.length != 0 && cidInfo(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "p"://邮编 { if (element.value.length != 0 && isPostCode(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "m"://移动电话 { if (element.value.length != 0 && isMoveTel(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "ip"://ip地址 { if (element.value.length != 0 && isIP3(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "t"://短时间 (13:04:15) { if (element.value.length != 0 && isShortTime(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "hour"://小时 { if (element.value.length != 0 && isHoutTime(element.value) == false) { window.alert("请输入有效的" + discript + "格式!") element.focus(); return(0); } break; } case "minute"://分钟 { if (element.value.length != 0 && isMinuteTime(element.value) == false) { window.alert("请输入有效的" + discript + "格式!") element.focus(); return(0); } break; } case "phone"://电话号码 { if (element.value.length != 0 && PhonesCheck(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } case "quhao"://电话号码(区号+电话) { if (element.value.length != 0 && PhonesQHCheck(element.value) == false) { window.alert("请输入有效的" + discript + "! (格式:区号-电话)") element.focus(); return(0); } break; } case "simpleP"://简单电话号码(数字,'(',')','-') { if (element.value.length != 0 && SimplePhone(element.value) == false) { window.alert("请输入有效的" + discript + "!") element.focus(); return(0); } break; } } } if (length != "" && type != "d") { if (lengthCheck(element.value, length)) { window.alert(discript + "的长度必须小于" + length/2 + "个汉字!" + length + "个字符!"); element.focus(); return(0); } } if (maxs != "" && mins != "") { if(type =="s") { if (lenInFact(element)<mins || lenInFact(element)>maxs) { window.alert(discript + "的长度必须小于" + maxs/2 + "个汉字!" + maxs + "个字符, 大于" + mins/2 + "个汉字!" + mins + "个字符!"); element.focus(); return(0); } } else { if (element.value < mins || element.value > maxs) { window.alert(discript + "的值必须小于" + maxs + ", 大于" + mins + "!"); element.focus(); return(0); } } } else { if (maxs != "") { if(type =="s") { if (lenInFact(element)> maxs) { window.alert(discript + "的长度必须小于" + maxs/2 + "个汉字" + maxs + "个字符!"); element.focus(); return(0); } } else { if (element.value > maxs) { window.alert(discript + "的值必须小于" + maxs + "!"); element.focus(); return(0); } } } if (mins != "") { if(type =="s") { if (lenInFact(element) < mins) { window.alert(discript + "的长度必须大于" +mins/2 + "个汉字" + mins + "个字符!"); element.focus(); return(0); } } else { if (element.value < mins) { window.alert(discript + "的值必须大于" + mins + "!"); element.focus(); return(0); } } } } return(1); } //电话号码的验证 //要求: //(1)电话号码由数字、"("、")"和"-"构成 //(2)电话号码为3到8位 //(3)如果电话号码中包含有区号,那么区号为三位或四位 //(4)区号用"("、")"或"-"和其他部分隔开 //(5)移动电话号码为11或12位,如果为12位,那么第一位为0 //(6)11位移动电话号码的第一位和第二位为"13" //(7)12位移动电话号码的第二位和第三位为"13" //根据这几条规则,可以与出以下正则表达式: //(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$) function PhoneCheck(s) { var str=s; var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/ //var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}1[3,5][0-9]{9}$)/ if(reg.test(str)){ return true; } else{ return false; } } function PhonesCheck(s) { var str=s; var reg=/(^(/([/d]{3,4}/)|[/d]{3,4}/-){0,1}[/d]{3,8}(/([/d]{1,4}/)|/-[/d]{1,4}){0,1}$)|(^0{0,1}13[/d]{9}$)|(^0{0,1}159[/d]{8}$)/; //var reg=/(^(/([/d]{3,4}/)|[/d]{3,4}/-){0,1}[/d]{3,8}(/([/d]{1,4}/)|/-[/d]{1,4}){0,1}$)|(^0{0,1}1[3,5][/d]{9}$)/; if(reg.test(str)){ return true; } else{ return false; } } function PhonesQHCheck(s) { var str=s; var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)/ if(reg.test(str)){ return true; } else{ return false; } } function SimplePhone(str){ var count; var numflag; for(count = 0; count < str.length; count++){ numchar = str.charAt(count); numflag = 0; if(numchar == "(" || numchar == ")" || numchar == "-" ){ numflag = 1; }else{ numvalue = numchar - '0'; if (numvalue >= 0 && numvalue <= 9){ numflag = 1; } } if(numflag == 0){ return false; } } return true; } //移动电话(手机) //样式:13531214732或013531214732 function isMoveTel(elem){ var pattern=/(^0{0,1}13[0-9]{9}$)|(^0{0,1}159[/d]{8}$)/; if(pattern.test(elem)){ return true; }else{ //elert("电话号码不正确"); return false; } } //验证IP地址 function isIP3(elem){ var pattern=/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])/; if(pattern.test(elem)){ return true; }else{ //alert("ip格式不正确"); return false; } } //短时间(形如: 13:04:06) //更具弹性的正则表达式:/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/ function isShortTime(elem){ var pattern=/^([0-9]{1,2})(:)([0-9]{1,2})(:)([0-9]{1,2})$/; var temp=elem.match(pattern); if(temp==null) return false; if(temp[1]>=24) return false; if(temp[3]>=60) return false; if(temp[5]>=60) return false; return true; } function isHoutTime(elem){ var pattern=/^([0-9]{1,2})$/; var temp=elem.match(pattern); if(temp==null) return false; if(temp[1]>=24) return false; return true; } function isMinuteTime(elem){ var pattern=/^([0-9]{1,2})$/; var temp=elem.match(pattern); if(temp==null) return false; if(temp[1]>=60) return false; return true; } //判断是否整数 function isInteger(integer) { var count; var numchar; var numvalue; for (count = 0; count < integer.length; count++) { numchar = integer.charAt(count); numvalue = numchar - '0'; if (!(numvalue >= 0 && numvalue <= 9)) return false; } return true; } //判断是否有效邮件 function isEmail(mail) { if (killSpace(mail) == "") return false; var v_email = mail.substring(mail.indexOf("@") + 1) if ( (mail.indexOf("@") == -1) || (mail.indexOf("@") == 0) || (mail.indexOf("@") != mail.lastIndexOf("@")) || (v_email.indexOf(".") == -1) || (v_email.indexOf(".") == 0) || ((mail.indexOf(".") + 1) == mail.length) ) { return false; } return true; } //身份证简单验证,单纯的位数验证 function isIdCard(idcard){ var re = /^[/d]{15}|[/d]{18}|[/d]{17}[Xx]$/; if(re.test(idcard)){ //alert("验证通过!"); return true; } else{ //alert("身份证号码错误!"); return false; } } //身份证严格验证,包括地区验证、生日验证和校验位验证 //18位公民身份证号码的编排规则: //身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 //排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其含义如下: //1. 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(本函数只对省级地区进行检验) //2. 出生日期码:表示编码对象出生的年、月、日,年、月、日分别用4位、2位、2位数字表示,之间不用分隔符。(出生日期合法性检验) //3. 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 //校验的计算方式: // 1. 对前17位数字本体码加权求和 // 公式为:S = Sum(Ai * Wi), i = 0, ... , 16 // 其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 // 2. 以11对计算结果取模 // Y = mod(S, 11) // 3. 根据模的值得到对应的校验码 // 对应关系为: // Y值: 0 1 2 3 4 5 6 7 8 9 10 // 校验码: 1 0 X 9 8 7 6 5 4 3 2 function cidInfo(idcard){ var Errors = new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!"); var 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:"国外"} var idcard,Y,JYM; var S,M; var idcard_array = new Array(); idcard_array = idcard.split(""); //地区检验 if(area[parseInt(idcard.substr(0,2))]==null) { //alert(Errors[4]); return false; } //身份号码位数、出生日期的合法性检查及格式检验 switch(idcard.length){ case 15: //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)){ //alert(Errors[0]); return true; } else{ //alert(Errors[2]); return false; } break; case 18: //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].toUpperCase()){ //alert(Errors[0]); return true; } else{ //alert(Errors[3]); return false; } } else{ //alert(Errors[2]); return false; } break; default: //alert(Errors[1]); return false; break; } } //判断是否为邮编 function isPostCode(postCode) { var v_postCode = killSpace(postCode); if (v_postCode == "") return false; if (v_postCode.length != 6) { //alert("邮政编码必须为6位数字!"); return false; } if (!isInteger(v_postCode)) { //alert("邮政编码必须全部为数字!"); return false; }else { return true; } } /** * 调用此函数校验日期。 * @param s 输入日期string s,如2001-01-01 * @return 若输入的日期没有包含非法字符,以及该日期合法,则返回true;否则返回false */ function isDate(s) { if (s.length != 10 || (s.charAt(4) != '-' && s.charAt(4) != '/') || (s.charAt(7) != '-' && s.charAt(7) != '/')) return false; if (!isInteger(s.substring(0, 4)) || !isInteger(s.substring(5, 7)) || !isInteger(s.substring(8, 10)) || eval(s.substring(0, 4)) < 1 || eval(s.substring(5, 7)) < 1 || eval(s.substring(8, 10)) < 1) return false; if (checkDate(s.substring(0, 4), s.substring(5, 7), s.substring(8, 10)) == false) return false; return true; } //检验日期是否合法 function checkDate(year, month, day) { var iyear; var imonth; var iday; if(year.length != 4 || month.length != 2 || day.length != 2) return false; if (!isInteger(year) || !isInteger(month) || !isInteger(day)) return false; iyear = getValueOfInt(year); imonth = getValueOfInt(month); iday = getValueOfInt(day); if (imonth < 1 || imonth > 12) return false; switch(imonth) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (iday > 31) return false; break; case 4: case 6: case 9: case 11: if (iday > 30) return false; break; default: if(mod(iyear, 4) == 0 && (mod(iyear, 100) != 0 || mod(iyear, 400) == 0)) {//判断是否润年 if (iday > 29) return false; }else { if (iday > 28) return false; } } return true; } //取得输入字符串所代表的整数值 function getValueOfInt(string) { var count; var numchar; var numvalue; var value; value = 0; for ( count = 0; count < string.length; count++) { numchar = string.charAt(count); numvalue = numchar - '0'; value = value * 10 + numvalue; } return value; } var e_tag; //当前正在分拆得Tag值 //开始解析分拆Tag值 function parseTag(p_tag) { e_tag = p_tag.substring (p_tag.indexOf("'")+1,p_tag.lastIndexOf ("'")); } //得到下一个分拆处理的值 function getNextValue() { if(e_tag == null || e_tag == "") return null; var p = e_tag.indexOf("|"); if(p == -1) p = e_tag.length; var r = e_tag.substring(0,p); e_tag = e_tag.substring(p + 1, e_tag.length); return r; } //删除空格处理,供checkValidate调用 function killSpace(x) { while ((x.length > 0) && (x.charAt(0) == ' ')) x = x.substring(1, x.length) while ((x.length > 0) && (x.charAt(x.length - 1) == ' ')) x = x.substring(0, x.length - 1) return x; } //计算中文长度 function count_char(str) { var len = 0; for(i = 0; i < str.length; i++) { var ech = escape(str.charAt(i)); if ( ech.length > 4 ){ // len++; //// 修改下面的数字,len + 1 表示2个字符代表一个中文字,len + 5 表示6个字符代表一个中文字 len = len + 1; /* if (ech>"%u07ff") len++; */ } len ++; } return len; } //检查输入的内容是否超过指定的长度 function lengthCheck(text, size) { var len = count_char(text); if ( len > size ) { return true; } return false; } function mod(var1,var2) { return (var1%var2); } function getNetuiTagName(id) { return netui_names[id]; } function getNetuiTagName(id, tag) { var scopeId = getScopeId(tag); if (scopeId == "") return netui_names[id]; else return netui_names[scopeId + "__" + id]; } function getScopeId(tag) { if (tag == null) return ""; if (tag.scopeId != null) return tag.scopeId; return getScopeId(tag.parentElement); } function disableAllButton(p_frm) { var eCount = p_frm.elements.length; for(var i = 0; i < eCount; i++) { var e=p_frm.elements[i]; if (e.type=="button" || e.type=="submit"){ e.disabled=true; } } return true; } function checkNumber(obj,num){ //过滤掉数字以外的键,48-57是数字键,46是".",num是小数点后几位 if (event.keyCode==46){ if (obj.value.length<=0){ //如果第一个键是".",屏蔽掉 event.keyCode=0; return; }//end if else { for (var n=0;n<obj.value.length;n++){ //如果"."过多,屏蔽掉 if (obj.value.substring(n,n+1)=="."){ event.keyCode=0; return; }//end if }//end for n return ; }//end else }//end if if (event.keyCode<48 || event.keyCode>57){ //过滤其他键 event.keyCode=0; return; } else{ //控制小数点后位数 for (var n=0;n<obj.value.length;n++){ if (obj.value.substring(n,n+1)=="."){ if ((obj.value.length-n)>num){ event.keyCode=0; return; }//end if }//end if }//end for n } } function checkBer(obj,num){ //控制字符输入长度 for (var n=0;n<obj.value.length;n++){ if ((obj.value.length-n)>=num){ event.keyCode=0; return; }//end if }//end for n } function lenInFact(obj,maxLen) { var c;var len=0;var j=0; for(var i=0;i<obj.value.length;i++) { c=escape(obj.value.charAt(i)); if(c.length>4) { len=len+2; } else { len++; } if(len>maxLen) { j=i-1; break; } } return j; } function lenInFact(obj) { var c; var len=0; for(var i=0;i<obj.value.length;i++) { c=escape(obj.value.charAt(i)); if(c.length>4) { len=len+2; } else { len++; } } return len; } //区间日期检查 function checkdate(date1,date2) { if(date1.value != "" && date2.value !="" && date1.value > date2.value) { alert("起始时间应小于或等于截止时间!"); return false; } return true; } function checkTextLength(obj,num){ //控制TextArea输入长度 //alert(obj.value.length); var maxLen=lenInFact(obj,num); //alert(maxLen); if(maxLen!=0) { obj.value=obj.value.substring(0,maxLen); } } function checkMaxInput(form,maxLen,message,remLen) { if (form.message.value.length > maxLen) form.message.value = form.message.value.substring(0, maxLen); else form.remLen.value = maxLen - form.message.value.length; } function checkInput(message,maxLen) { if (message.value.length > maxLen) // if too long.... trim it! message.value = message.value.substring(0, maxLen); // otherwise, update 'characters left' counter //else remLen.value = maxLen - message.value.length; } function checkMaxInput2(message,maxLen,remLen) { if (message.value.length > maxLen) message.value = message.value.substring(0, maxLen); else remLen.value = maxLen - message.value.length; } //检查时间范围 function checkDateRange(y1,y2) { d1 = getStringToDate(y1.value); d2 = getStringToDate(y2.value); d1m = d1.getTime(); d2m = d2.getTime(); if( d1m > d2m ) { alert("起始时间不能大于终止时间,请重新输入!"); y1.value = ""; y2.value = ""; y1.focus(); return false; } return true; } function getStringToDate(y1) { year1 = y1.substring(0,y1.indexOf('-')); tmpY1 = y1.substring(y1.indexOf('-') + 1,y1.length); month1 = tmpY1.substring(0,tmpY1.indexOf('-')); day1 = tmpY1.substring(tmpY1.indexOf('-') + 1, tmpY1.length); return new Date(year1, month1, day1, 0, 0, 0, 0); } function processSubmit(obj){ obj.disabled=true; if(checkAll(obj.form)){ obj.form.submit(); }else { obj.disabled=false; } }
一个不错的 js 校验
本文转载:CSDN博客