/**袁嘉伟 * 2014/11/3 15:00 * 校验 */ $(function(){//easyui的validateBox校验后的tooltip的样式不可调,而且只能逐个验证,所以自己写校验和tooltip var flag=0; $('.tip1').each(function(){ $(this).tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写 position: 'right', deltaX:5, content: '', onShow: function(){ $(this).tooltip('tip').css({ color:'#000000', backgroundColor: '#FFFFCC', borderColor: '#CC9933' }); }, onHide:function(){ $(this).css({ backgroundColor:"#FFFFFF" }) }, showEvent:'', showDelay:'0', hideDelay:'10', hideEvent:'focus' }); }); $('.tip2').each(function(){ $(this).tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写 position: 'right', deltaX:5, content: '', onShow: function(){ var obj=$(this); var tip = $(this).tooltip('tip'); $(this).tooltip('tip').css({ color:'#000000', backgroundColor: '#FFFFCC', borderColor: '#CC9933' }); setTimeout(function () {obj.css({backgroundColor:"#FFFFFF"});tip.hide();},2000);//--1秒之后移除提示小框-- }, onHide:function(){ $(this).css({ backgroundColor:"#FFFFFF" }) }, showEvent:'', showDelay:'0', hideDelay:'', hideEvent:'' }); }); $(".required").each(function(){ //所有必填项后加入* $(" *").insertAfter(this); }); $(".requiredChange").each(function(){ //所有必填项后加入* $(" *").insertAfter(this); }); $("body").on("change",".requiredChange",function(){ checkRequired($(this)); }); $("body").on("blur",".required",function(){ checkRequired($(this)); }); $("body").on("blur",".password1",function(){ checkPassword($(this)); }); $("body").on("blur",".email",function(){ checkEmail($(this)); }); $("body").on("blur",".zipcode",function(){ checkZipcode($(this)); }); $("body").on("blur",".mobile",function(){ checkMobile($(this)); }); $("body").on("blur",".phone",function(){ checkPhone($(this)); }); $("body").on("blur",".idcard",function(){ checkIdcard($(this)); }); $("body").on("blur",".chs",function(){ checkChs($(this)); }); $("body").on("blur",".notChs",function(){ checkNotChs($(this)); }); $("body").on("blur",".number",function(){ checkNumber($(this)); }); $("body").on("blur",".URL",function(){ checkURL($(this)); }); $("body").on("blur","input[class*='minLength']",function(){ checkMinLength($(this)); }); $("body").on("blur","input[class*='maxLength']",function(){ checkMaxLength($(this)); }); $("body").on("blur",".cnewp",function(){ checkCnewp($(this)); }); $("body").on("blur",".orgCode",function(){ flag= checkOrgCode($(this)); }); if(flag==1){ $("body").on("blur","input[class*='checkUnique']",function(){ // checkUnique($(this)); }); } }); function addTooltip(obj){ //动态添加的元素要另外用这个来加tooltip obj.tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写 position: 'right', deltaX:5, content: '', onShow: function(){ $(this).tooltip('tip').css({ color:'#000000', backgroundColor: '#FFFFCC', borderColor: '#CC9933' }); }, onHide:function(){ $(this).css({ backgroundColor:"#FFFFFF" }) }, showEvent:'', showDelay:'0', hideDelay:'10', hideEvent:'focus' }); } function addTooltip2(obj){ //动态添加的元素要另外用这个来加tooltip obj.tooltip({ //公共的tooltip,所有需要tooltip的,class都加上tip1 若需多个不同样式的tooltip可另外写 position: 'right', deltaX:5, content: '', onShow: function(){ var obj=$(this); var tip = $(this).tooltip('tip'); $(this).tooltip('tip').css({ color:'#000000', backgroundColor: '#FFFFCC', borderColor: '#CC9933' }); setTimeout(function () {obj.css({backgroundColor:"#FFFFFF"});tip.hide();},2000);//--1秒之后移除提示小框-- }, onHide:function(){ $(this).css({ backgroundColor:"#FFFFFF" }) }, showEvent:'', showDelay:'0', hideDelay:'', hideEvent:'' }); } function hideAllTooltips(){ $("input[class*='tip1']").each(function(){ //最多输入字符 $(this).tooltip('hide'); }); $("select[class*='tip1']").each(function(){ //最多输入字符 $(this).tooltip('hide'); }); } /*function mySubmit(ff){//后空格是否去掉的问题? //具体怎么提交写到自己页面上 if(checkBeforeSubmit()==1){ $('#'+ff).submit(); //通过才提交,注意页面上的提交按钮type不要用submit,用button } };*/ function checkBeforeSubmit(){ var flag=1; $(".zipcode").each(function(){ //邮编 if(checkZipcode($(this))==false){flag=0;} //flag=checkZipcode($(this)); }); $(".mobile").each(function(){ //手机13 14 15 18开头,后9位随意 if(checkMobile($(this))==false){flag=0;} }); $(".phone").each(function(){ //固话 if(checkPhone($(this))==false){flag=0;} }); $(".idcard").each(function(){ //身份证,用的上个项目的函数做校验 if(checkIdcard($(this))==false){flag=0;} }); $(".chs").each(function(){ //汉字 if(checkChs($(this))==false){flag=0;} }); $(".notChs").each(function(){ //非汉字 if(checkNotChs($(this))==false){flag=0;} }); $(".number").each(function(){ //数字,可有小数点 if(checkNumber($(this))==false){flag=0;} }); $("input[class*='minLength']").each(function(){ //最少输入字符 if(checkMinLength($(this))==false){flag=0;} }); $("input[class*='maxLength']").each(function(){ //最多输入字符 if(checkMaxLength($(this))==false){flag=0;} }); $(".email").each(function(){ //邮箱 if(checkEmail($(this))==false){flag=0;} }); $(".required").each(function(){ //必填项 if(checkRequired($(this))==false){flag=0;} }); $(".requiredChange").each(function(){ //必填项 if(checkRequired($(this))==false){flag=0;} }); $(".password1").each(function(){ //必填项 if(checkPassword($(this))==false){flag=0;} }); $(".cnewp").each(function(){ if(checkCnewp($(this))==false){flag=0;} }); $(".URL").each(function(){ if(checkURL($(this))==false){flag=0;} }); $(".orgCode").each(function(){ //组织机构代码 if(checkOrgCode($(this))==false){flag=0;} }); if(flag==1) { $("input[class*='checkUnique']").each(function(){ //最多输入字符 // if(checkUnique($(this))==false){flag=0;} }); } return flag; } function checkBeforeSubmitS(divId){ //若提交前只校验某区域下的东西,可用这个函数 var flag=1; $("#"+divId+" .zipcode").each(function(){ //邮编 if(checkZipcode($(this))==false){flag=0;} //flag=checkZipcode($(this)); }); $("#"+divId+" .mobile").each(function(){ //手机13 14 15 18开头,后9位随意 if(checkMobile($(this))==false){flag=0;} }); $("#"+divId+" .phone").each(function(){ //手机13 14 15 18开头,后9位随意 if(checkPhone($(this))==false){flag=0;} }); $("#"+divId+" .idcard").each(function(){ //身份证,用的上个项目的函数做校验 if(checkIdcard($(this))==false){flag=0;} }); $("#"+divId+" .chs").each(function(){ //汉字 if(checkChs($(this))==false){flag=0;} }); $("#"+divId+" .notChs").each(function(){ //非汉字 if(checkNotChs($(this))==false){flag=0;} }); $("#"+divId+" .number").each(function(){ //数字,可有小数点 if(checkNumber($(this))==false){flag=0;} }); $("#"+divId+" input[class*='minLength']").each(function(){ //最少输入字符 if(checkMinLength($(this))==false){flag=0;} }); $("#"+divId+" input[class*='maxLength']").each(function(){ //最多输入字符 if(checkMaxLength($(this))==false){flag=0;} }); $("#"+divId+" .email").each(function(){ //邮箱 if(checkEmail($(this))==false){flag=0;} }); $("#"+divId+" .required").each(function(){ //必填项 if(checkRequired($(this))==false){flag=0;} }); $("#"+divId+" .password1").each(function(){ //必填项 if(checkPassword($(this))==false){flag=0;} }); $("#"+divId+" .requiredChange").each(function(){ //必填项 if(checkRequired($(this))==false){flag=0;} }); $("#"+divId+" .cnewp").each(function(){ if(checkCnewp($(this))==false){flag=0;} }); $("#"+divId+" .URL").each(function(){ if(checkURL($(this))==false){flag=0;} }); $("#"+divId+" .orgCode").each(function(){ //组织机构代码9 18 if(checkOrgCode($(this))==false){flag=0;} }); if(flag==1){ $("#"+divId+" input[class*='checkUnique']").each(function(){ //最多输入字符 // if(checkUnique($(this))==false){flag=0;} }); } return flag; } function checkUnique(obj){ //这个写的不是很好,待优化 var flag=1; var value=obj.val(); var par=""; //存放checkUnique带的参 如checkUnique:5:userId:ui|ob里的5:txt_userId:txt_userEmailTwo|txt_userEmailTwo var type=""; //存放checkUnique带的参的第一个 如checkUnique:5:userId:ui|ob里的5 必须配 var code=""; //存放checkUnique带的参的第二个的value 如checkUnique:5:userId:ui|ob里的userId 这个参数用于修改页面的唯一性校验校验到原来自己的时候排除掉,可不配(如checkUnique5::ui|ob)(新增页面等) var hiddenId="";//存放checkUnique带的参的第三个(hidden input的id) 如checkUnique:5:userId:userAccount里的userAccount这两input的id 因为可能tooltip显示在某正常input框但value来自某隐藏input框 var inputArray="";//存放checkUnique带的参的第四个(都是input的id) 如checkUnique:5:userId:userAccount:ui|ob里的ui ob这两个input的id 用于定自己想在哪个input框显示tooltip if(trim(value)!=""&&typeof(value)!="undefined"){ //这类验证,全部做成有输入才验证,如果想必填就加上required var a=obj.attr("class"); //把有该元素的所有class拿下 var b=a.split(" "); //拿回checkUnique这个class for(x in b){ //拿回checkUnique带的参 if(b[x].indexOf("checkUnique")!="-1"){ par=b[x].substr(12); } } if(trim(par)!=""&&typeof(par)!="undefined"){ var parArray= new Array(); parArray=par.split(":"); if(trim(parArray[0])!=""&&typeof(parArray[0])!="undefined"){ //第一个参应该是type 如checkUnique:5的5 因为是必须配的,所以有才检验 type=parArray[0]; if(trim(parArray[1])!=""&&typeof(parArray[1])!="undefined"){ //拿下第二个参,可有可没如checkUnique:5 或checkUnique:5:: 或checkUnique:5::ui|ob 或checkUnique:5:txt_userId:ui|ob code=$("#"+parArray[1]).val(); }else{ code=""; } if(trim(parArray[2])!=""&&typeof(parArray[2])!="undefined"){//拿下第三个参,可有可没如checkUnique:5 或checkUnique:5:: 或checkUnique:5:txt_userId:userAccount或checkUnique:5:txt_userId:userAccount:ui|ob ,一般是不用配的,如果这个class放在隐藏input框就要了 hiddenId=parArray[2]; value=$("#"+parArray[2]).val(); } if(trim(parArray[3])!=""&&typeof(parArray[3])!="undefined"){//拿下第四个参,可有可没如checkUnique:5 或checkUnique:5:: 或checkUnique:5:txt_userId或checkUnique:5:txt_userId:userAccount:ui|ob ,一般是不用配的,如果这个class放在隐藏input框就要了 inputArray=parArray[3].split("|"); } $.ajax({ url :projectAllName+"/Admin/Component/checkUnique.action", //后台处理程序 type:"post", //数据发送方式 async:false, dataType:"json", //接受数据格式 data:{value:value,type:type,code:code}, //这东西自动序列化进url error: function(){ }, success: function(result){ if(!result.checkResult){ if(typeof(result.info)!="undefined") { if(obj.attr("id")=="roleId2"){ obj.tooltip("update",result.info); obj.tooltip('show'); }else{ obj.tooltip("update",result.info); obj.tooltip('show'); obj.css("background","#FCEAE8"); for (i=0;i= 224.0.0.0 // excludes network & broacast addresses // (first & last IP address of each class) "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + "|" + // host name "(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)" + // domain name "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + // TLD identifier "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" + ")" + // port number "(?::\\d{2,5})?" + // resource path "(?:/\\S*)?" + "$", "i" ); if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required var newVal=""; if(obj.val().indexOf("http://")=="-1"&&obj.val().indexOf("ftp://")=="-1"){ newVal="http://"+obj.val(); } else{ newVal=obj.val(); } if(!re_weburl.test(newVal)) { obj.tooltip("update","URL格式不正确"); obj.tooltip('show'); obj.css("background","#FCEAE8"); return false; } } }; function checkMaxLength(obj){ var length=0; if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required var a=obj.attr("class"); //把有maxLength的元素的所有class拿下 var b=a.split(" "); //拿回maxLengthX这个class for(x in b){ //拿回maxLength带的参 if(b[x].indexOf("maxLength")!="-1"){ length=b[x].substr(9); } } if(obj.val().length>length){ obj.tooltip("update","请最多输入"+length+"个字符"); obj.tooltip('show'); obj.css("background","#FCEAE8"); return false; } } }; function checkCnewp(obj){ if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required if($('.newp').val()==""){ $('.newp').tooltip("update","请输入新密码"); $('.newp').tooltip('show'); $('.newp').css("background","#FCEAE8"); return false; } else if(!(obj.val()==$('.newp').val())) { obj.tooltip("update","两次输入不一样"); obj.tooltip('show'); obj.css("background","#FCEAE8"); return false; } } }; function checkPassword(obj){ //这个是要同时有数字和大小写字母组成 if(obj.val()!=""){ //这类验证,全部做成有输入才验证,如果想必填就加上required if((!obj.val().match(/([a-z])+/))||(!obj.val().match(/([0-9])+/))||(!obj.val().match(/([A-Z])+/))){ obj.tooltip("update","密码必须同时由大小写字母和数字组成"); obj.tooltip('show'); obj.css("background","#FCEAE8"); return false; } } }; /* // extend the 'equals' rule $.extend($.fn.validatebox.defaults.rules, { //可用于重置密码 equals: { validator: function(value,param){ return value == $(param[0]).val(); }, message: '两次输入不一样' } }); $.extend($.fn.validatebox.defaults.rules, { //验证最少输入数,可直接用easyui的length[15,25]去定义最少输入数 minLength: { validator: function(value, param){ return (value.trim().length >= param[0]); }, message: '请至少输入 {0} 个字符.' //在页面上validType='minLength[5]'内配置最少输入数 } }); $.extend($.fn.validatebox.defaults.rules, { //验证数字 number: { validator: function (value) { return (/^\d+\.{0,1}\d*$/).test(value); }, message: '只能输入数字' } }); $.extend($.fn.validatebox.defaults.rules, { //验证汉字 CHS: { validator: function (value) { return /^[\u0391-\uFFE5]+$/.test(value); }, message: '只能输入汉字' } }); $.extend($.fn.validatebox.defaults.rules, { ////国内邮编验证 只能验证开头不为0的6位数字,如123456等不真实的邮编依然能通过验证 zipcode: { validator: function (value) { var reg = /^[1-9]\d{5}$/; return reg.test(value); }, message: '邮编必须是非0开始的6位数字.' } }); $.extend($.fn.validatebox.defaults.rules, { //手机校验13,14,15,18开头,后9位数字随意 mobile: { validator: function (value, param) { return /^1[3|4|5|8]\d{9}$/.test(value); }, message: '不是正确的11位手机号' } }); $.extend($.fn.validatebox.defaults.rules, { //验证身份证号码 idcard: { validator: function (value, param) { return validateIdCard(value); } } }); */ ///身份证验证函数,不要随意改动 function validateIdCard(obj) { 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 : "国 外" }; var iSum = 0; //var info = ""; var strIDno = obj; var idCardLength = strIDno.length; if (!/^\d{17}(\d|x)$/i.test(strIDno) && !/^\d{15}$/i.test(strIDno)) return false;//非法身份证号 if (aCity[parseInt(strIDno.substr(0, 2))] == null) return false;// 非法地区 // 15位身份证转换为18位 if (idCardLength == 15) { sBirthday = "19" + strIDno.substr(6, 2) + "-" + Number(strIDno.substr(8, 2)) + "-" + Number(strIDno.substr(10, 2)); var d = new Date(sBirthday.replace(/-/g, "/")) var dd = d.getFullYear().toString() + "-" + (d.getMonth() + 1) + "-" + d.getDate(); if (sBirthday != dd) return false;//非法生日 strIDno = strIDno.substring(0, 6) + "19" + strIDno.substring(6, 15); strIDno = strIDno + GetVerifyBit(strIDno); } // 判断是否大于2078年,小于1900年 var year = strIDno.substring(6, 10); if (year < 1900 || year > 2078) return false;//非法生日 //18位身份证处理 //在后面的运算中x相当于数字10,所以转换成a strIDno = strIDno.replace(/x$/i, "a"); sBirthday = strIDno.substr(6, 4) + "-" + Number(strIDno.substr(10, 2)) + "-" + Number(strIDno.substr(12, 2)); var d = new Date(sBirthday.replace(/-/g, "/")) if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return false;//非法生日 // 身份证编码规范验证 for (var i = 17;i >= 0;i--) iSum += (Math.pow(2, i) % 11) * parseInt(strIDno.charAt(17 - i), 11); if (iSum % 11 != 1) return false;// 非法身份证号 // 判断是否屏蔽身份证 var words = new Array(); words = new Array("11111119111111111", "12121219121212121"); for (var k = 0;k < words.length;k++) { if (strIDno.indexOf(words[k]) != - 1) { return false; } } return true; } //15位转18位中,计算校验位即最后一位,不要随意改动 function GetVerifyBit(id) { var result; var nNum = id.charAt(0) * 7 + id.charAt(1) * 9 + id.charAt(2) * 10 + id.charAt(3) * 5 + id.charAt(4) * 8 + id.charAt(5) * 4 + id.charAt(6) * 2 + id.charAt(7) * 1 + id.charAt(8) * 6 + id.charAt(9) * 3 + id.charAt(10) * 7 + id.charAt(11) * 9 + id.charAt(12) * 10 + id.charAt(13) * 5 + id.charAt(14) * 8 + id.charAt(15) * 4 + id.charAt(16) * 2; nNum = nNum % 11; switch (nNum) { case 0: result = "1"; break; case 1: result = "0"; break; case 2: result = "X"; break; case 3: result = "9"; break; case 4: result = "8"; break; case 5: result = "7"; break; case 6: result = "6"; break; case 7: result = "5"; break; case 8: result = "4"; break; case 9: result = "3"; break; case 10: result = "2"; break; } return result; } function trim(stringToTrim) { if(typeof(stringToTrim)=="undefined"||stringToTrim==null){ return; } else return stringToTrim.replace(/^\s+|\s+$/g,""); } function ltrim(stringToTrim) { return stringToTrim.replace(/^\s+/,""); } function rtrim(stringToTrim) { return stringToTrim.replace(/\s+$/,""); } $(document).ready(function(){ $('[type="text"]').focus(function(){ if($(this).val() == ' '){ $(this).val(''); } }) })