/* 问题: 1、注册的接口不完善 没有非窗体注册的函数 */ Namespace.register("U.MD.U.R"); //用户注册的命名空间 // 用户名 密码 确认密码 验证码 后面2个都没有用 //用于判断用户是否已经在输入框中输入了正确的值。 U.MD.U.R.isregister = [false, false, false, false, false, true]; //#region 用户注册信息判断 //#region 用户注册使用区域 /** * 弹出注册框的处理 * */ U.MD.U.R.register = function () { var _parent = $("#U_MD_U_L_login"); //登录注册框 //弹出注册框 // new U.UF.UI.form("", _parent[0], // { // "id": "U_MD_HomeC_Pop", // "style": { // "width": "360px", // "height": "505px" // } // }, // { // isdrag: false, // isstretching: false, // isenlarge: false, // isnarrow: false // }); var _child = _parent.Child(); //获取登录注册找回密码的div _child[1].style.display = "block"; //显示注册框 _child[2].style.display = "none"; //隐藏注册 _child[3].style.display = "none"; //隐藏登录 $("div", _child[0])[2].innerHTML = "快速注册"; //头部设置内容 var _head = $(_child[0]).childs()[1]; //设置头部内容 $(_head).addAttrArray({ innerHTML: "已经有账号? 现在登录", title: "", "className": "U_MD_U_L_Top_Yun" }); //注册验证码区域 if (!$("#U_MD_U_R_VC_Img img")[0]) { //"onerror": U.MD.C.imgError, $$("img", { //生成验证码 "alt": "看不清?点击重获验证码", "src": "http://main.1473.cn/Uses.ashx?mode=GraphicVerificationCode&n=" + Math.random(), "onclick": function () { U.MD.U.R.regenerateVerificaCode(this); } }, $("#U_MD_U_R_VC_Img")[0]); } //输入框聚焦 var _input = $("input", _child[1])[0]; _input.focus(); } /** * 重新生成验证码 * @param {element} 生成验证码的图片 * */ U.MD.U.R.regenerateVerificaCode = function (image) { image.src = "http://main.1473.cn/Uses.ashx?mode=GraphicVerificationCode&n=" + Math.random(); } /** * 单击注册按钮后,首先判断是否已经阅读了云端协议,然后检查是否用户输入的信息是否全部合法。 * @param {element} 按钮 * */ U.MD.U.R.clickRegister = function (button) { var _inputs = $("#U_MD_U_R_I").find("input"); //是否已经阅读了云端协议。 if (_inputs[3].checked) { //判断注册的信息是否通过,都通过直接注册处理 if (U.MD.U.R.isRegister(_inputs, button) && _inputs[2].value != "") { U.MD.U.R.ajaxRegister(_inputs[0].value, _inputs[1].value, "", $("#U_MD_U_L_login")[0]); //调用ajax的注册 _inputs.addAttrArray({ "value": "" }); //注册可以通过,那么所有填写的信息都删除 //调用这个复原输入框的样式 for (i = 0; i < _inputs.length; i++) { if (_inputs[i].offsetWidth && _inputs[i].onblur) { //如果input没有隐藏的情况 _inputs[i].onblur(); } } button.innerText = "注册中..."; //注册按钮提示处理 } //弹出提示框 else if (_inputs[0].value != "" && _inputs[1].value == "") { U.alert("请填写密码"); }else if (_inputs[1].value != "" && _inputs[2].value == "") { U.alert("请正确填写信息"); } else { U.alert("请正确的填写信息"); } } //如果没有勾选云端协议处理 else { U.alert("请阅读云端协议"); } } /** * 注册判断设置 * @param {element} 输入的框 * @param {element} 按钮 * */ U.MD.U.R.isRegister = function (inputs, button) { var _checked = U.MD.U.R.isregister.indexOf(false); //判断注册的信息里是否有没有填写或者填写有问题的 //如果所有的填写数据都是成功的处理 if (_checked == -1) { return true; } //如果错误只是验证码错误 else if (_checked == 4) { //验证码获取 U.MD.U.R.verificationCode(inputs[2], function () { U.MD.U.R.clickRegister(button); //验证码获取成功后的回调处理 }); return true; } return false; } //用户注册Ajax函数。 /** //外面用户可以直接调用U.MD.U.R.register(username,password),调用之前必须设置全局变量US.systemId,测试用户U.MD.U.R.register=0.开发者账号需要进入授权系统进行授权 返回值: */ U.MD.U.R.ajaxRegister = U.MD.U.R.UR = function (username, password, email, loading) { U.MD.U.R.isregister = [false, false, false, false, false, true]; //注册成功响应后,允许注册的值改成false //注册处理,调用后台注册 U.A.Request(US.USER, ["UserRegister", username, password, email, US.city.userAllLocation, ""], U.MD.U.R.asynRegister, [loading, US.city.userAllLocation]); //注册的同时执行登录 } /** * 用户注册异步 * @param {element} 输入的框 * @param {element} 按钮 * */ U.MD.U.R.asynRegister = function (r, outsite) { var value = r.value; //账号重复注册的处理 if (value == "notregister") { U.alert("已经存在该账号!"); } //注册失败 else if (value == "false") { U.alert("系统繁忙,请稍后。"); } //注册成功,直接登录处理 else { //注册成功直接登录 U.MD.U.L.asynLoginAjax(r); //写入用户来源信息,根据链接统计是哪一个推广人员推广的。 U.MD.U.NP.TGR(); return r; } } /** * 验证码javascript * @param {element} 输入的框 * @param {element} 按钮 * */ U.MD.U.R.verificationCode = function (input, cb) { var _code = input.value, //输入的验证码值 _isnumber = U.UF.S.Number.test(_code); //判断输入的验证码是否符合格式 if (_isnumber) { //发送ajax判断是否注册成功 U.A.Request(US.USER, ["ConfirmGraphicVerificationCode", _code], U.MD.U.R.asynVerificationCode, ["", input, cb]); //验证码样式设置 U.MD.U.R.setInputStyle(input, { 'textAlign': 'right', 'color': 'red', "display": "block" }, "验证中..."); } else if (_code) { //验证码样式设置 U.MD.U.R.setInputStyle(input, { 'textAlign': 'right', 'color': 'red', "display": "block" }, "格式错误"); } else { //验证码样式设置 U.MD.U.R.setInputStyle(input, { 'textAlign': 'right', 'color': '#00aa99', "display": "block" }, "验证码"); } } /** * 验证码异步 * */ U.MD.U.R.asynVerificationCode = function (r) { var _context = r.context, //参数 _input = _context[1], //验证码输入框 _cb = _context[2] //回调函数 ; r = r.value; //得到后台数据库返回的值 //如果验证码正确的处理 if (r == "True") { U.MD.U.R.setInputStyle(_input, { 'textAlign': 'right', 'marginRight': '0px', 'color': '#00aa99', "display": "block" }, "成功"); //设置提示说明样式 U.MD.U.R.isregister[4] = true; //设置验证码成功 if (U.UF.C.isFunction(_cb)) { _cb(); //成功后的回调 } } //验证码正确 else if (r == "False") { U.MD.U.R.setInputStyle(_input, { 'textAlign': 'right', 'marginRight': '15px', 'color': 'red', "display": "block" }, "错误"); //设置提示说明样式 return false; } //重新生成验证码 else { _input.value = ""; //清空验证码输入 _input.blur(); //调用blur复原输入框值 U.MD.U.R.setInputStyle(_input, { 'textAlign': 'center', 'marginRight': '0px', 'color': '#00aa99', "display": "block" }, "验证码"); //设置提示说明样式 $("img", $(_input).Parent(3))[0].src = "http://main.1473.cn/Uses.ashx?mode=GraphicVerificationCode&n=" + Math.random(); //重新生成验证码 _input.focus(); //验证码聚焦 U.alert("验证码错误或者服务器繁忙"); //弹出服务器繁忙 } } //#endregion /* 判断用户名 这里包括登录所有的用户名的审核 是否通过等。此函数在cookie登录中不会调用。 参数一: 参数二:UDE为数组, 参数三: 返回值: */ U.MD.U.R.checkUserName = function (inputel) { var _username = inputel.value; //获取用户名 //输入为空不做变化 $('.U_MD_U_L_Box_U_B').removeClass(" U_MD_U_L_Box_mistakeBorder"); if ($('.U_MD_U_L_Box_checkUseNameFormat')[0]) {//检测账号格式提示是否存在 $('.U_MD_U_L_Box_checkUseNameFormat')[0].parentNode.removeChild($('.U_MD_U_L_Box_checkUseNameFormat')[0]); } if (_username == "") { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'left' }, "用户账号"); //输入的用户名为空的样式处理 } //注册的用户不符合要求 else if (!U.UF.S.UserName.test(_username)) { $('.U_MD_U_L_Box_U_B').addClass(" U_MD_U_L_Box_mistakeBorder"); U_MD_U_L_createFormat($('.U_MD_U_L_LB')[0], $('.U_MD_U_L_Box_P_B')[0]); //U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'right' }, "2-10汉字或4-20字符"); //注册用户名不符合提示 } //用户注册 需要判断用户是否有重复的用户名 else { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'right' }, "等待认证,请稍后..."); //设置注册的提示 U.A.Request(US.USER, ["CheckUserName", _username], U.MD.U.R.asynCheckUserName, ["", inputel]); } } /** *创建用户账号是否标准提醒 * */ U_MD_U_L_createFormat = function (parentnode, beforenode) { if (beforenode == $('.U_MD_U_L_Box_P_B')[0] && $('.U_MD_U_L_Box_checkUseNameFormat')[0]) { $('.U_MD_U_L_Box_checkUseNameFormat')[0].parentNode.removeChild($('.U_MD_U_L_Box_checkUseNameFormat')[0]); } var _format = document.createElement('div'); _format.className = "U_MD_U_L_Box_checkUseNameFormat"; _format.innerText = "2-10汉字或4-20字符"; parentnode.insertBefore(_format, beforenode); } /** * 判断用户名是否存在 * @param {object} ajax对象 * */ U.MD.U.R.asynCheckUserName = function (r) { var _context = r.context, _inputel = _context[1]; r = r.value; //无法注册 if (r == true) { U.MD.U.R.setInputStyle(_inputel, { "color": "red" }, "已被注册!"); } //成功注册 else { U.MD.U.R.setInputStyle(_inputel, { "display": "none" }); U.MD.U.R.isregister[0] = true; } } /** * 判断密码输入是否有问题 * @param {object} ajax对象 * */ U.MD.U.R.checkPassword = function (inputel) { var _password = inputel.value; $('.U_MD_U_L_Box_P_B').removeClass(" U_MD_U_L_Box_mistakeBorder"); if ($('.U_MD_U_L_Box_checkPWFormat')[0]) { $('.U_MD_U_L_Box_checkPWFormat')[0].parentNode.removeChild($('.U_MD_U_L_Box_checkPWFormat')[0]); } //如果没有输入密码 if (_password == "") { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'left', 'marginRight': '0px' }, "6-20位字符或数字"); //没有输入密码的提示 } //输入的密码的格式不对 else if (!U.UF.S.PassWord.test(_password)) { $('.U_MD_U_L_Box_P_B').addClass(" U_MD_U_L_Box_mistakeBorder"); U_MD_U_L_checkPWFormat($('.U_MD_U_L_LB')[0], $('.U_MD_U_R_VC')[0]); //U.MD.U.R.setInputStyle(inputel, { "display": "block", "color": "red", 'textAlign': 'right', 'marginRight': '15px' }, "6-20位字符或数字"); //输入的密码有问题 } //输入 else { U.MD.U.R.passwordStrength(inputel); //判断输入的密码强度 U.MD.U.R.isregister[1] = true; //设置已经成功通过密码审核 return true; } return false; } /** *创建用户账号是否标准提醒 * */ U_MD_U_L_checkPWFormat = function (parentnode, beforenode) { if (beforenode == $('.U_MD_U_R_VC')[0] && $('.U_MD_U_L_Box_checkPWFormat')[0]) { $('.U_MD_U_L_Box_checkPWFormat')[0].parentNode.removeChild($('.U_MD_U_L_Box_checkPWFormat')[0]); } var _format = document.createElement('div'); _format.className = "U_MD_U_L_Box_checkPWFormat"; _format.innerText = "2-10汉字或4-20字符"; parentnode.insertBefore(_format, beforenode); } /** * 隐藏提示框,隐藏提示框,一般都在在点击重新输入,或者是点击取消提示框的时候使用 * @param {object} ajax对象 * */ U.MD.U.R.hidePromptBox = function (el) { var _parentel = $(el).Parent(); //上级父亲层; $("i", _parentel)[0].style.display = "none"; //提示框隐藏 try { $("input", _parentel)[0].focus(); } catch (e) { } } /** * 设置样式 * @param {element} 输入的框 * @param {element} 样式 * */ U.MD.U.R.setInputStyle = function (input, styles, text) { //找input输入框的父亲元素 var _parent = $(input).Parent(); //指定的元素里面找孩子元素为i的元素 var _el = $("i", _parent); styles.display = "block"; _el.addAttrArray({ "style": styles, "innerHTML": text || "" }, 0)[0]; } /** * 设置样式 * @param {element} 输入的框+ * */ U.MD.U.R.passwordStrength = function (input) { var i = 0, _value = input.value, _arr = [ ["弱", "#e64141"], ["中", "#0a8cd2"], ["强", "#4bb900"]]; //如果输入的内容大于10,那么加一 if (_value.length > 10) { i++; } //如果输入的内容含数字,那么加一 if (_value.match(/[0-9]/ig)) { i++; } //如果输入的内容含字符,那么加一 if (_value.match(/[a-z]/ig)) { i++; } //选择输入的强度数字 i = i > 0 ? i - 1 : i; //找input输入框的父亲元素 var _parent = $(input).Parent(); //指定的元素里面找孩子元素为i的元素 var _el = $("i", _parent); //设置样式 _el.addAttrArray({ "style": { "textAlign": "right", "display": "block", "color": _arr[i][1] }, "innerHTML": _arr[i][0] }, 0); //设置密码样式 } //#endregion