http://passport.360buy.com/new/misc/js/jdValidate.js
http://passport.360buy.com/new2/misc/js/Resources/jdValidate.Var.en.js
var validateRegExp={ decmal:"^([+-]?)\\d*\\.\\d+$", //浮点数 decmal1: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$", //正浮点数 decmal2: "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$", //负浮点数 decmal3: "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$", //浮点数 decmal4: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$", //非负浮点数(正浮点数 + 0) decmal5: "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$", //非正浮点数(负浮点数 + 0) intege: "^-?[1-9]\\d*$", //整数 intege1: "^[1-9]\\d*$", //正整数 intege2: "^-[1-9]\\d*$", //负整数 num: "^([+-]?)\\d*\\.?\\d+$", //数字 num1: "^[1-9]\\d*|0$", //正数(正整数 + 0) num2: "^-[1-9]\\d*|0$", //负数(负整数 + 0) ascii: "^[\\x00-\\xFF]+$", //仅ACSII字符 chinese: "^[\\u4e00-\\u9fa5]+$", //仅中文 color: "^[a-fA-F0-9]{6}$", //颜色 date: "^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$", //日期 email: "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件 idcard: "^[1-9]([0-9]{14}|[0-9]{17})$", //身份证 ip4: "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$", //ip地址 letter: "^[A-Za-z]+$", //字母 letter_l: "^[a-z]+$", //小写字母 letter_u: "^[A-Z]+$", //大写字母 mobile: "^0?(13|15|18)[0-9]{9}$", //手机 notempty: "^\\S+$", //非空 password: "^[A-Za-z0-9_-]+$", //密码 picture: "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$", //图片 qq: "^[1-9]*[1-9][0-9]*$", //QQ号码 rar: "(.*)\\.(rar|zip|7zip|tgz)$", //压缩文件 tel: "^[0-9\-()()]{7,18}$", //电话号码的函数(包括验证国内区号,国际区号,分机号) url: "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$", //url username: "^[A-Za-z0-9_\\-\\u4e00-\\u9fa5]+$", //用户名 deptname: "^[A-Za-z0-9_()()\\-\\u4e00-\\u9fa5]+$", //单位名 zipcode: "^\\d{6}$", //邮编 realname:"^[A-Za-z0-9\\u4e00-\\u9fa5]+$", // 真实姓名 companyname:"^[A-Za-z0-9_()()\\-\\u4e00-\\u9fa5]+$", companyaddr:"^[A-Za-z0-9_()()\\#\\-\\u4e00-\\u9fa5]+$", companysite:"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&#=]*)?$" }; //主函数 (function($) { $.fn.jdValidate = function(option, callback, def) { var ele = this; var id = ele.attr("id"); var type = ele.attr("type"); var rel = ele.attr("rel"); var _onFocus = $("#" + id + validateSettings.onFocus.container); var _succeed = $("#" + id + validateSettings.succeed.container); var _isNull = $("#" + id + validateSettings.isNull.container); var _error = $("#" + id + validateSettings.error.container); if (def == true) { var str = ele.val(); var tag = ele.attr("sta"); if (str == "" || str == "-1") { validateSettings.isNull.run({ prompts: option, element: ele, isNullEle: _isNull, succeedEle: _succeed }, option.isNull); } else if (tag == 1 || tag == 2) { return; } else { callback({ prompts: option, element: ele, value: str, errorEle: _error, succeedEle: _succeed }); } } else { if (typeof def == "string") { ele.val(def); } if (type == "checkbox" || type == "radio") { if (ele.attr("checked") == true) { ele.attr("sta", validateSettings.succeed.state); } } switch (type) { case "text": case "password": ele.bind("focus", function() { var str = ele.val(); if (str == def) { ele.val(""); } if(id=="pwd"){ $("#pwdstrength").hide(); } validateSettings.onFocus.run({ prompts: option, element: ele, value: str, onFocusEle: _onFocus, succeedEle: _succeed }, option.onFocus); }) .bind("blur", function() { var str = ele.val(); if (str == "") { ele.val(def); } if (validateRules.isNull(str)) { validateSettings.isNull.run({ prompts: option, element: ele, value: str, isNullEle: _isNull, succeedEle: _succeed }, ""); } else { callback({ prompts: option, element: ele, value: str, errorEle: _error, isNullEle: _isNull, succeedEle: _succeed }); } }); break; default: if (rel && rel == "select") { ele.bind("change", function() { var str = ele.val(); callback({ prompts: option, element: ele, value: str, errorEle: _error, isNullEle: _isNull, succeedEle: _succeed }); }) } else { ele.bind("click", function() { callback({ prompts: option, element: ele, errorEle: _error, isNullEle: _isNull, succeedEle: _succeed }); }) } break; } } } })(jQuery); //配置 var validateSettings = { onFocus: { state: null, container: "_error", style: "focus", run: function(option, str) { if (!validateRules.checkType(option.element)) { option.element.removeClass(validateSettings.INPUT_style2).addClass(validateSettings.INPUT_style1); } option.onFocusEle.removeClass().addClass(validateSettings.onFocus.style).html(str); } }, isNull: { state: 0, container: "_error", style: "null", run: function(option, str) { option.element.attr("sta", 0); if (!validateRules.checkType(option.element)) { if (str != "") { option.element.removeClass(validateSettings.INPUT_style1).addClass(validateSettings.INPUT_style2); } else { option.element.removeClass(validateSettings.INPUT_style2).removeClass(validateSettings.INPUT_style1); } } option.succeedEle.removeClass(validateSettings.succeed.style); option.isNullEle.removeClass().addClass(validateSettings.isNull.style).html(str); } }, error: { state: 1, container: "_error", style: "error", run: function(option, str) { option.element.attr("sta", 1); if (!validateRules.checkType(option.element)) { option.element.removeClass(validateSettings.INPUT_style1).addClass(validateSettings.INPUT_style2); } option.succeedEle.removeClass(validateSettings.succeed.style); option.errorEle.removeClass().addClass(validateSettings.error.style).html(str); } }, succeed: { state: 2, container: "_succeed", style: "succeed", run: function(option) { option.element.attr("sta", 2); option.errorEle.empty(); if (!validateRules.checkType(option.element)) { option.element.removeClass(validateSettings.INPUT_style1).removeClass(validateSettings.INPUT_style2); } if (option.element.attr("id") == "schoolinput" && $("#schoolid").val() == "") { return; } option.succeedEle.addClass(validateSettings.succeed.style); } }, INPUT_style1: "highlight1", INPUT_style2: "highlight2" }; //验证规则 var validateRules={ isNull:function(str){ return (str==""||typeof str!="string"); }, betweenLength:function(str,_min,_max){ return (str.length>=_min&&str.length<=_max); }, isUid:function(str){ return new RegExp(validateRegExp.username).test(str); }, isPwd:function(str){ return new RegExp(validateRegExp.password).test(str); }, isPwd2:function(str1,str2){ return (str1==str2); }, isEmail:function(str){ return new RegExp(validateRegExp.email).test(str); }, isTel:function(str){ return new RegExp(validateRegExp.tel).test(str); }, isMobile:function(str){ return new RegExp(validateRegExp.mobile).test(str); }, checkType:function(element){ return (element.attr("type")=="checkbox"||element.attr("type")=="radio"||element.attr("rel")=="select"); }, isChinese:function(str){ return new RegExp(validateRegExp.chinese).test(str); }, isRealName:function(str){ return new RegExp(validateRegExp.realname).test(str); }, isDeptname:function(str){ return new RegExp(validateRegExp.deptname).test(str); }, isCompanyname:function(str){ return new RegExp(validateRegExp.companyname).test(str); }, isCompanyaddr:function(str){ return new RegExp(validateRegExp.companyaddr).test(str); }, isCompanysite:function(str){ return new RegExp(validateRegExp.companysite).test(str); } }; //验证文本 var validatePrompt={ username:{ onFocus:"4-20位字符,可由中文、英文、数字及“_”、“-”组成", succeed:"", isNull:"请输入用户名", error:{ beUsed:"该用户名已被使用,请使用其它用户名注册,如果您是"{1}",请<a href='https://passport.360buy.com/new/login.aspx' class='flk13'>登录</a>", badLength:"用户名长度只能在4-20位字符之间", badFormat:"用户名只能由中文、英文、数字及“_”、“-”组成" } }, pwd:{ onFocus:"6-16位字符,可由英文、数字及“_”、“-”组成", succeed:"", isNull:"请输入密码", error:{ badLength:"密码长度只能在6-16位字符之间", badFormat:"密码只能由英文、数字及“_”、“-”组成" } }, pwd2:{ onFocus:"请再次输入密码", succeed:"", isNull:"请输入密码", error:{ badLength:"密码长度只能在6-16位字符之间", badFormat2:"两次输入密码不一致", badFormat1:"密码只能由英文、数字及“_”、“-”组成" } }, mail:{ onFocus:"请输入常用的邮箱,将用来找回密码、接收订单通知等", succeed:"", isNull:"请输入邮箱", error:{ beUsed:"该邮箱已被使用,请更换其它邮箱,或使用该邮箱<a href='http://passport.360buy.com/retrievepassword.aspx' class='flk13'>找回密码</a>", badFormat:"邮箱格式不正确", badLength:"您填写的邮箱过长,邮件地址只能在50个字符以内" } }, authcode:{ onFocus:"请输入图片中的字符,不区分大小写", succeed:"", isNull:"请输入验证码", error:"验证码错误" }, protocol:{ onFocus:"", succeed:"", isNull:"请先阅读并同意《京东商城用户协议》", error:"" }, referrer:{ onFocus:"如您注册并完成订单,推荐人有机会获得积分", succeed:"", isNull:"", error:"" }, schoolinput: { onFocus: "您可以用简拼、全拼、中文进行校名模糊查找", succeed: "", isNull: "请填选学校名称", error: "请填选学校名称" }, empty:{ onFocus:"", succeed:"", isNull:"", error:"" } }; var nameold,emailold,authcodeold; var namestate=false,emailstate=false,authcodestate=false; //回调函数 var validateFunction={ username:function(option){ var format=validateRules.isUid(option.value); var length=validateRules.betweenLength(option.value.replace(/[^\x00-\xff]/g,"**"),4,20); if(!length&&format){ validateSettings.error.run(option,option.prompts.error.badLength); } else if(!length&&!format){ validateSettings.error.run(option,option.prompts.error.badFormat); } else if(length&&!format){ validateSettings.error.run(option,option.prompts.error.badFormat); } else{ if(!namestate||nameold!=option.value) { if(nameold!=option.value) { nameold=option.value; option.errorEle.html("<span style='color:#999'>检验中……</span>"); $.getJSON("AjaxService.aspx?action=CheckUnicknme&uid="+escape(option.value)+"&r="+Math.random(),function(date){ if(date.success==0){ validateSettings.succeed.run(option); namestate=true; }else{ validateSettings.error.run(option,option.prompts.error.beUsed.replace("{1}",option.value)); namestate=false; } }) } else { validateSettings.error.run(option,option.prompts.error.beUsed.replace("{1}",option.value)); namestate=false; } } else { validateSettings.succeed.run(option); } } }, pwd:function(option){ var str1=option.value; var str2=$("#pwd2").val(); var format=validateRules.isPwd(option.value); var length=validateRules.betweenLength(option.value,6,16); $("#pwdstrength").hide(); if(!length&&format){ validateSettings.error.run(option,option.prompts.error.badLength); } else if(!length&&!format){ validateSettings.error.run(option,option.prompts.error.badFormat); } else if(length&&!format){ validateSettings.error.run(option,option.prompts.error.badFormat); } else{ validateSettings.succeed.run(option); validateFunction.pwdstrength(); } if (str2==str1){ $("#pwd2").focus(); } }, pwd2:function(option){ var str1=option.value; var str2=$("#pwd").val(); var length=validateRules.betweenLength(option.value,6,16); var format2=validateRules.isPwd2(str1,str2); var format1=validateRules.isPwd(str1); if (!length){ validateSettings.error.run(option,option.prompts.error.badLength); }else{ if (!format1){ validateSettings.error.run(option,option.prompts.error.badFormat1); }else{ if(!format2){ validateSettings.error.run(option,option.prompts.error.badFormat2); } else{ validateSettings.succeed.run(option); } } } }, mail:function(option){ var format=validateRules.isEmail(option.value); var format2=validateRules.betweenLength(option.value,0,50); if(!format){ validateSettings.error.run(option,option.prompts.error.badFormat); }else{ if (!format2){ validateSettings.error.run(option,option.prompts.error.badLength); }else{ if(!emailstate||emailold!=option.value) { if(emailold!=option.value) { emailold=option.value; option.errorEle.html("<span style='color:#999'>检验中……</span>"); $.getJSON("AjaxService.aspx?action=CheckUemail&str="+escape(option.value)+"&r="+Math.random(),function(date){ if(date.success==0){ validateSettings.succeed.run(option); emailstate=true; }else{ validateSettings.error.run(option,option.prompts.error.beUsed); emailstate=false; } }) } else { validateSettings.error.run(option,option.prompts.error.beUsed); emailstate=false; } } else { validateSettings.succeed.run(option); } } } }, referrer:function(option){ var bool=validateRules.isNull(option.value); if (bool){ option.element.val("可不填"); return; }else{ validateSettings.succeed.run(option); } }, schoolinput: function(option) { var bool = validateRules.isNull(option.value); if (bool) { validateSettings.error.run(option, option.prompts.error); return; } else { validateSettings.succeed.run(option); } }, authcode:function(option){ if(!authcodestate||authcodeold!=option.value) { if(authcodeold!=option.value) { authcodeold=option.value; option.errorEle.html("<span style='color:#999'>检验中……</span>"); var uuid=$("#JD_Verification1").attr("src").split("&uid=")[1].split("&")[0]; $.getJSON("AjaxService.aspx?action=CheckAuthcode&str="+escape(option.value)+"&r="+Math.random()+"&uuid="+uuid,function(date){ if (date.success==0){ validateSettings.succeed.run(option); authcodestate=true; }else{ validateSettings.error.run(option,option.prompts.error); authcodestate=false; } }) } else { validateSettings.error.run(option,option.prompts.error); authcodestate=false; } } else { validateSettings.succeed.run(option); } }, protocol:function(option){ if (option.element.attr("checked")==true){ option.element.attr("sta",validateSettings.succeed.state); option.errorEle.html(""); }else{ option.element.attr("sta",validateSettings.isNull.state); option.succeedEle.removeClass(validateSettings.succeed.style); } }, pwdstrength:function(){ var element=$("#pwdstrength"); var value=$("#pwd").val(); var strength = 0; if (value.length>=6&&validateRules.isPwd(value)){ $("#pwd_error").empty(); element.show(); if (/\d/i.test(value)){ strength += 1; } if (/[a-z]/i.test(value)){ strength += 1; } if (/[-_]/i.test(value)){ strength += 1; } switch (strength){ case 1: element.removeClass().addClass("strengthA"); break; case 2: element.removeClass().addClass("strengthB"); break; case 3: element.removeClass().addClass("strengthC"); break; default: break; } }else{ element.hide(); } }, checkGroup:function(elements){ for (var i=0;i<elements.length;i++){ if (elements[i].checked){ return true; } } return false; }, checkSelectGroup:function(elements){ for (var i=0;i<elements.length;i++){ if (elements[i].value==-1){ return false; } } return true; }, showPassword:function(type){ var v1=$("#pwd").val(),s1=$("#pwd").attr("sta"),c1=document.getElementById("pwd").className,t1=$("#pwd").attr("tabindex"); var v2=$("#pwd2").val(),s2=$("#pwd2").attr("sta"),c2=document.getElementById("pwd2").className,t2=$("#pwd2").attr("tabindex"); var P1=$("<input type='"+ type +"' value='" + v1 + "' sta='"+ s1 +"' class='"+ c1 +"' id='pwd' name='pwd' tabindex='"+ t1 +"'/>"); $("#pwd").after(P1).remove(); $("#pwd").bind("keyup",function(){ validateFunction.pwdstrength(); }).jdValidate(validatePrompt.pwd,validateFunction.pwd) var P2=$("<input type='"+ type +"' value='" + v2 + "' sta='"+ s2 +"' class='"+ c2 +"' id='pwd2' name='pwd2' tabindex='"+ t2 +"'/>"); $("#pwd2").after(P2).remove(); $("#pwd2").jdValidate(validatePrompt.pwd2,validateFunction.pwd2); }, FORM_submit:function(elements){ var bool=true; for (var i=0;i<elements.length;i++){ if ($(elements[i]).attr("sta")==2){ bool=true; }else{ bool=false; break; } } return bool; } };