/** 注册验证类 **/
var RegisterValidate = {
//每个页面仅仅加载一次,这是一个标志
isGetUrlPara : 0,
currentGame : "bw",
defaultGame : "_bw",
/** 一些链接 **/
dHttpUrl : "http://d.bw.zqgame.com",
ajaxUrl : "http://d.bw.zqgame.com/register/quick",
userNameRemote : "http://d.bw.zqgame.com/register/checkname", // 异步请求校验重复性路径
authImageUrl : "http://d.bw.zqgame.com/register/captcha-image?",//验证码
//有多个验证码需要存在时,请在页面自动刷新验证码,初始化加载时仅仅加载第一个初始化注册的验证码
/**
* 针对同一个session(页面)需要两个验证码
*/
authImageFlag : false,
defaultValidate : {
/** 默认的提示信息 **/
usernameRequiredMsg : "没有填写用户名",
usernameRegexusernameMsg : "只能输入字符串和数字",
usernameMinlengthMsg : "用户名不能小于{0}个字符",
usernameRemoteMsg : "用户名已经被注册",
passwordRequiredMsg : "没有填写密码",
passwordMinlengthMsg : "密码最少{0}个字符",
password_confirmationRequiredMsg : "没有确认密码",
password_confirmationEqualToMsg : "两次输入密码不一致嘛",
captchaEqualToMsg : "验证码必填",
captchaMaxlengthMsg : "验证码最多{0}个字符",
licenseRequiredMsg : "是否同意服务条款",
rightEmailMsg : "请输入正确格式邮箱",
emailRequiredMsg : "请输入邮箱地址",
notEqualNameAndPaswd : "用户名和密码不能相同!",
realNameRequiredMsg : "用户名不能为空",
realNameIsRealNameMsg : "输入中文姓名",
cardRequiredMsg : "身份证号码不能为空",
carIsCardMsg : "身份证号码非法",
/** 默认的验证规则 **/
userNameMinLength : 6,
passMinLength : 6,
captMaxLength : 4
},
/** 显示验证码 **/
getValidateServlets : function(autchImageId) {
document.getElementById(autchImageId).src = RegisterValidate.authImageUrl + Math.random();
},
/** 身份证验证 **/
checkIdcard : function(idcard){
idcard = idcard.toUpperCase();
var Errors=new Array("","身份证号码位数不对","身份证号码出生日期超出范围或含有非法字符","身份证号码校验错误","身份证地区非法","身份证号码不受支持,请输入18位身份证号码或升级你的身份证号码");
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)
return false;
switch(idcard.length){
case 15:
return false;
break;
case 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])
return true;
else
return false;
} else
return false;
break;
default:
return false;
break;
}
},
//初始化校验规则
initValidata : function() {
/**
* 自定义一些正则表达式校验规则 这个是登录名通行证注册时,过滤中文的
*/
jQuery.validator.addMethod("notChina", function(value, element){
var notChinaReg = /^([a-zA-Z0-9]+)$/;
return this.optional(element) || (notChinaReg.test(value));
}, RegisterValidate.defaultValidate.usernameRegexusernameMsg);
jQuery.validator.addMethod("notEqualTo", function(value, element, param) {
return value != $(param).val();
}, $.validator.format(RegisterValidate.defaultValidate.notEqualNameAndPaswd));
/**
* 身份证号码验证
*/
jQuery.validator.addMethod("isIdcardno", function(value, element) {
return this.optional(element) || RegisterValidate.checkIdcard(value);
}, RegisterValidate.defaultValidate.carIsCardMsg);
/**
* 真实姓名
*/
jQuery.validator.addMethod("isRealName", function(value, element){
var realNameReg = /^[\u4E00-\u9FA5\uFE30-\uFFA0]+$/g;
return this.optional(element) || (realNameReg.test(value));
}, RegisterValidate.defaultValidate.realNameIsRealNameMsg);
},
//获取一个实例
getInstance : function(_currentGame ,settings){
/** 回调 start **/
var defaultAjaxErrorMethod = function(data, textStatus) {
alert(data.message);
};
var defaultAjaxError = function(XMLHttpRequest, textStatus, errorThrown) {
try{
var e = jQuery.parseJSON(XMLHttpRequest.responseText);
alert(e.message);
}catch(e){
alert("提示:[服务器出错]");
}
};
var defaultAjaxCalbackMethod = function(data, textStatus) {
alert("恭喜您注册成功!");
$("input").val("");
};
var defaultValiSucceMethod = function(label) {
label.remove();
};
var validateErrorElement = {};
var defaultValiErrorMethod = function(error, element) {
$("#errorShowId").empty();
error.appendTo($("#errorShowId"));
var msg = $("#errorShowId").text();
var name = element.attr("name");
validateErrorElement["\"" + name + "\""] = msg;
if(msg != null && msg != ""){
$(validationData.errorLabel).css("color", "red").text(msg);
return;
}
var havaError = false;
for (var one in validateErrorElement) {
if(validateErrorElement[one] != null && validateErrorElement[one] != ""){
$(validationData.errorLabel).css("color", "red").text(validateErrorElement[one]);
havaError=true;
return;
}
}
if(!havaError){
$(validationData.errorLabel).text("");
}
};
/** 回调 end **/
/** 一些默认值 **/
var validationData = {
isSubmit : false, //初始时是否提交
/** 各种id **/
regFormId : "#registgerFormId", // 默认注册表单ID
passwordId : "#passwordId",// 密码输入框Id 检测两次输入密码是否一致
userName : "input[name='username']", // 选择通行证注册与选择邮箱注册时切换输入框内容
submitObj : ".regBtn",// 定义提交按钮为图片或其他非input按钮时候用到的
autchImageId : "imagedid", //验证码
errorLabel : "#textInfo", //默认错误信息提示
rewriteUrl:false,
rewriteReCommand:false,
/** 各种回调 **/
ajaxErrorMethod:defaultAjaxErrorMethod,
ajaxError:defaultAjaxError,
ajaxCalbackMethod:defaultAjaxCalbackMethod,
valiSucceMethod:defaultValiSucceMethod,
valiErrorMethod:defaultValiErrorMethod,
validate : RegisterValidate.defaultValidate
};
/** 初始化数据 start **/
//初始化常量,若settings不为空,则会合并validationData
validationData = jQuery.extend(true, validationData, settings);
RegisterValidate.currentGame = _currentGame;
if(!validationData.rewriteUrl){
/** 初始化全局变量 **/
//RegisterValidate.defaultGame = "_" + _currentGame;
RegisterValidate.dHttpUrl = "http://d." + _currentGame + ".zqgame.com";
RegisterValidate.ajaxUrl = "http://d." + _currentGame + ".zqgame.com/register/quick";
RegisterValidate.userNameRemote = "http://d." + _currentGame + ".zqgame.com/register/checkname"; // 异步请求校验重复性路径
RegisterValidate.authImageUrl = "http://d." + _currentGame + ".zqgame.com/register/captcha-image?";//验证码
}
if(!validationData.rewriteReCommand){
RegisterValidate.defaultGame = "_" + _currentGame;
}
//显示验证码
if(!RegisterValidate.authImageFlag){
RegisterValidate.authImageFlag = true;
$("#" + validationData.autchImageId).attr("src", RegisterValidate.authImageUrl + Math.random());
}
/** 验证用户名重复性参数 **/
var checkUserNameRemoteMethod = {
url : RegisterValidate.userNameRemote, // 后台处理程序
type : "get", // 数据发送方式
dataType : "jsonp", // 接受数据格式
username : function() {
return $(validationData.regFormId + " " + validationData.userName).val();
},
error : function() {
alert("服务器忙,请重试!");
}
};
/** 初始化数据 end **/
/** 获得推广来源 部分 begin **/
var getCookie = function(name) {
var arr = document.cookie.match(new RegExp("(^| )" + name
+ "=([^;]*)(;|$)"));
if (arr != null)
return decodeURI(arr[2]);
return "";
};
// 两个参数,一个是cookie的名子,一个是值
var setCookie = function(name, value) {
var Days = 30; // 此 cookie 将被保存 30小时
var exp = new Date(); // new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
document.cookie = name + "=" + escape(value) + ";expires="
+ exp.toGMTString() + ";domain=.zqgame.com";
};
var ad = '';// 广告来源
var purl = '';// 来源url
var pimgid = '';// 来源图片
var getUrlPara = function(defaultGame) {
purl = document.referrer;
if (purl == null || purl == '') {
purl = 'rw';
}
var firstz = purl.indexOf('://');
if (firstz > -1) {
purl = purl.substring(firstz + 3, purl.length - 1);
}
var endz = purl.indexOf('/');
if (endz > -1) {
purl = purl.substring(0, endz);
}
purl = purl + defaultGame;
setCookie("urlf", purl);
if (window.location.search.indexOf("?") >= 0) {
var paras = window.location.search.substr(1).split("&");
for ( var i = 0; i < paras.length; ++i) {
paras[i] = paras[i].toLowerCase();
if (paras[i].indexOf("ad=") == 0) {
ad = paras[i];
if (ad.substr(3) != null && ad.substr(3) != "") {
setCookie("ad", ad.substr(3));
}
}
// add daly 2010.6.7
if (paras[i].indexOf("imgid=") == 0) {
pimgid = paras[i].toLowerCase().substr(6);
}
}
}
// add daly 2010.6.1
if (ad == "" || ad == null) {
ad = "ad=" + getCookie("ad");
}
};
/** 获得推广来源 部分 end **/
/** 回调之前调用 start **/
/**
* type
* ajaxError
* ajaxCalback
* ajaxCalbackError
* 参数:
* arguments[0] : 回调类型(上面二选一)
* 其余参数根据上面四种默认回调参数类型顺序获取
* @returns
*/
var defaultAjaxPreCallbak = function() {
var type = arguments[0];
if(type == "ajaxError"){
validationData.ajaxError(arguments[1], arguments[2], arguments[3]);
}else if(type == "ajaxCalback"){
validationData.ajaxCalbackMethod(arguments[1], arguments[2]);
}else if(type == "ajaxCalbackError"){
validationData.ajaxErrorMethod(arguments[1], arguments[2]);
}
//刷新验证码
RegisterValidate.getValidateServlets(validationData.autchImageId);
};
var defaultValiSuccePreCallbak = function(label) {
validationData.valiSucceMethod(label);
};
var defaultValiErrorPreCallbak = function(error, element) {
validationData.valiErrorMethod(error, element);
};
/** 回调之前调用 end **/
//检验
var validateForm = function(){
$(validationData.regFormId).validate({
onkeyup : false,
rules : {
username : {
required : true,
notChina : true,
minlength : validationData.validate.userNameMinLength,
remote : checkUserNameRemoteMethod
},
password : {
required : true,
minlength : validationData.validate.passMinLength,
notEqualTo : validationData.userName
},
password_confirmation : {
required : true,
equalTo : validationData.passwordId
},
realName : {
required : true,
isRealName : true
},
card : {
required : true,
isIdcardno : true
},
captcha : {
required : true,
maxlength : validationData.validate.captMaxLength
},
license : {
required : true
}
},
messages : {
username : {
required : validationData.validate.usernameRequiredMsg,
notChina : validationData.validate.usernameRegexusernameMsg,
minlength : jQuery.format(validationData.validate.usernameMinlengthMsg),
remote : validationData.validate.usernameRemoteMsg
},
password : {
required : validationData.validate.passwordRequiredMsg,
minlength : jQuery.format(validationData.validate.passwordMinlengthMsg)
},
password_confirmation : {
required : validationData.validate.password_confirmationRequiredMsg,
equalTo : validationData.validate.password_confirmationEqualToMsg
},
realName : {
required : validationData.validate.realNameRequiredMsg,
isRealName : validationData.validate.realNameIsRealNameMsg
},
card : {
required :validationData.validate.cardRequiredMsg,
isIdcardno : validationData.validate.carIsCardMsg
},
captcha : {
required : validationData.validate.captchaEqualToMsg,
maxlength : jQuery.format(validationData.validate.captchaMaxlengthMsg)
},
license : {
required : validationData.validate.licenseRequiredMsg
}
},
errorPlacement : defaultValiErrorPreCallbak,
success : defaultValiSuccePreCallbak
});
/**
* 图片做submit提交
*/
$(validationData.submitObj).click(function() {
$(validationData.regFormId).submit();
return false;
});
if(validationData.isSubmit){
$(validationData.regFormId).submit();
}
};
/** 提交表单 **/
var validatorRegisterForm = function() {
$("body").after("<span id='errorShowId' style='display:none;'></span>");
//定义默认的ajax请求参数
var ajaxOptions = {
async : false,
url : RegisterValidate.ajaxUrl,
type : "get",
dataType : "jsonp",
// crossDomain: true,
success : function(data, textStatus) { // 注册请求回调处理方法
if (data.status == "success") {
defaultAjaxPreCallbak("ajaxCalback", data, textStatus);
} else {
defaultAjaxPreCallbak("ajaxCalbackError", data, textStatus);
}
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
defaultAjaxPreCallbak("ajaxError", XMLHttpRequest, textStatus, errorThrown);
}
};
/**
* 更改validator默认的form提交方式为异步ajax并执行提交操作
*/
$.validator.setDefaults({
submitHandler : function(form) {
var param = $(validationData.regFormId).serialize();
param += "&szSrc=" + purl + "&" + ad + "&spreadImageId="
+ pimgid;
ajaxOptions = jQuery.extend(ajaxOptions, {
data : param
});
$.ajax(ajaxOptions);
}
});
};
/** 加载时执行 **/
if(RegisterValidate.isGetUrlPara == 0){
getUrlPara(RegisterValidate.defaultGame);
RegisterValidate.isGetUrlPara += 1;
}
/** 验证码绑定事件 **/
$("#" + validationData.autchImageId).click(function(){
//刷新验证码
RegisterValidate.getValidateServlets(validationData.autchImageId);
}).mouseover(function(){
$(this).css("cursor", "pointer");
});
RegisterValidate.initValidata();
validatorRegisterForm();
validateForm();
}
};
// qq验证
jQuery.validator.addMethod("qq", function(value, element) {
var tel = /^[1-9]\d{4,9}$/;
return this.optional(element) || (tel.test(value));
}, "qq号码格式错误");
// 手机号码验证
jQuery.validator.addMethod("tel", function(value, element) {
var length = value.length;
var mobile = /^(13\d{9})|(14\d{9})|(15\d{9})|(17\d{9})|(18\d{9})$/g;
return this.optional(element) || (length == 11 && mobile.test(value));
}, "手机号码格式错误");