Namespace.register("U.MD.U.F"); //用户找回帐号 //#region 切换找回方式 /** * 弹出密码找回 * */ U.MD.U.F.findPassword = function () { var _parent = $("#U_MD_U_L_login"); //登录注册框 //弹出密码找回 var _child = _parent.Child(); //获取登录注册找回密码的div _child[1].style.display = "none"; //隐藏注册 _child[2].style.display = "none"; //隐藏登录 $("div", _child[0])[2].innerHTML = "找回密码"; //头部设置内容 var _head = $(_child[0]).childs()[1]; $(_head).addAttrArray({ "innerHTML": "", "onclick": null, "className": "", "title": "" }); //调用找回密码的上下部的处理,设置为第一步 U.MD.U.F.findPasswordProcessing($(_child[3]).Child()[1], 0); //显示的默认密保找回处理 U.MD.U.F.switchEmailOrSecurityFind($("span", _child[3])[0], 'security'); _child[3].style.display = "block"; //显示找回密码 } /** * 手机号找回后的上下步操作处理 * * @param {element} 找回密码元素 * @param {int} 第几步 */ U.MD.U.F.findPasswordProcessing = function (el, displaynum) { var _inputs, _len, _bottom, _child = $(el).Child(), //获取找回和确认找回的两个步骤的元素 _parentel = $(el).Parent(); //找回密码确认上下步处理 for (i = 0; i < _child.length; i++) { //判断显示的隐藏的区域处理 if (i == displaynum) { //如果是显示 _child[i].style.display = "block"; _inputs = $("input", _child[i]); //获取显示的元素下的input元素 _len = _inputs.length; //输入框的总长度 } else { //隐藏 _child[i].style.display = "none"; } } //使用聚焦和释放的方式,重新设置input的初始化样式 while (_len--) { _inputs[_len].value = ""; _inputs[_len].innerText = "6-20位字符或数字"; _inputs[_len].focus(); _inputs[_len].blur(); } } /** * 切换找回的方式,邮箱,密保,手机切找回的方式 * */ U.MD.U.F.switchEmailOrSecurityFind = function (el, typename) { var _input, _tempel, _parentel = $(el).Parent(2), _childs = $(_parentel).Child(), _inputs = $("input", _parentel), _span = $("span", _parentel), _is = $("i", _parentel), _bottom = $(_parentel).Child()[2], _code = $("#U_MD_U_L_Overflow_Code")[0]; //验证码框 //如果是邮箱找回处理 if (typename == "email") { _input = _inputs[1]; _tempel = $$("input", { "type": "text", "onblur": function () { U.MD.U.F.checkEmail(this); $(this).parentElement(2).removeClass('U_MD_U_L_Box_Border'); }, "onfocus": _input.onfocus, "onkeyup": _input.onkeyup }); _input.parentNode.replaceChild(_tempel, _input); _is[1].innerText = "请输入邮箱"; _span[1].className = "U_MD_U_F_T_Hover"; _span[0].className = ""; _code.style.display = "none"; //验证码框 _bottom.onclick = function () { U.MD.U.F.findPasswordByEmail(_childs[1]); } } //如果是手机找回处理 else if (typename == 'security') {//更改style _input = _inputs[1]; _tempel = $$("input", { "type": "text", "onblur": function () { U.MD.U.F.checkPhone(this); $(this).parentElement(2).removeClass('U_MD_U_L_Box_Border'); }, //更改onblur事件 "onfocus": _input.onfocus, //更改onfocus事件 "onkeyup": _input.onkeyup//更改onkeyup事件 }); _input.parentNode.replaceChild(_tempel, _input); //替换 _is[1].innerText = "请输入手机号"; _span[0].className = "U_MD_U_F_T_Hover"; //更改class _span[1].className = ""; //更改class _code.style.display = "block"; //验证码框 _inputs[3].value = "发送"; //验证码框内的value _inputs[3].onclick = function () {//验证码框的点击事件 U.MD.U.F.userName(U.MD.U.F.phoneSend); //验证用户名是否存在 } _bottom.onclick = function () {//设定提交按钮的点击事件 U.MD.U.F.phoneConfirm(_childs[1]); //确认验证码 } } } //#endregion //#region 手机找回 /** * 手机号设置 * * @param {element} 手机号设置处理 */ U.MD.U.F.checkSecurityCode = function (el) { var _inputs = $("input", el), //输入框 _username = _inputs[0], //密码 _phone = _inputs[1]; //确认手机号 if (U.MD.U.F.checkUserName(_username) && U.MD.U.F.checkPhone(_phone)) {//判断账号和手机号是否输入指定格式 U.MD.U.F.phoneCheckSecurityCode(["", el, _username, _phone])//调用后台处理用户的修改密码 } } /** * 手机发送验证码 * */ U.MD.U.F.phoneSend = function () { var _username = $("#U_MD_U_L_Box_height")[0].children[0].children[0].value; //用户名 U.A.Request(US.CD, [US.DB, "UseStudio_Users", "GetUserinfoByUserName", _username], function (r) {//根据用户名获取用户信息 if (r.value[0] == undefined) { //判断是否输入手机号 U.MD.U.R.setInputStyle($("#userphone")[0].children[0], {//给$("#userphone")[0].children[0] 设置 一个红色边框的样式 让用户知道你输入的手机号与账号设置的手机号不匹配 "color": "red", "textAlign": "right", "display": "block" }, "输入的手机号与账号不匹配"); return false; //如果输入手机号与账号设置的手机号不匹配 return false } if (r.value[0].UserTelephoneNumber != $("#userphone")[0].children[0].children[0].value) {//如果输入手机号与账号设置的手机号不匹配) U.MD.U.R.setInputStyle($("#userphone")[0].children[0], {//给$("#userphone")[0].children[0] 设置 一个红色边框的样式 让用户知道你输入的手机号与账号设置的手机号不匹配 "color": "red", "textAlign": "right", "display": "block" }, "输入的手机号与账号不匹配"); return false; //如果输入手机号与账号设置的手机号不匹配 return false } else {//如果输入手机号与账号匹配 向手机发送验证码 // U.A.Request("http://api.cloudsql.1473.cn/postnumber", [$("#userphone")[0].children[0].children[0].value], function (r) { // console.log(r); // }); var _xhttp = new XMLHttpRequest(); //XMLHttpRequest 对象用于在后台与服务器交换数据 _xhttp.onreadystatechange = function () {//每当 readyState 属性改变时,就会调用该函数。 if (this.readyState == 4) {//发送成功后 if (this.status == 201) { U.Alert('发送成功'); //弹出发送成功 U.MD.U.F.setTime($("#U_MD_U_L_Overflow_Code")[0].children[1].children[0]); //60秒倒计时 } else { U.Alert(JSON.parse(this.response).err || '验证码发送失败,请重新发送...'); } } }; _xhttp.open("POST", "http://api.cloudsql.1473.cn/postnumber", true); //指定和服务器端交互的HTTP方法,URL地址及其他请求信息 _xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //向一个打开但未发送的请求设置或添加一个 HTTP 请求 _xhttp.withCredentials = true; //发送cookie等认证信息到服务端 _xhttp.send("number=" + $("#userphone")[0].children[0].children[0].value); //$("#userphone")[0].children[0].children[0].value 发送的手机号输入的框 // U.A.Request.Post("http://api.cloudsql.1473.cn/postnumber", { number: $("#userphone")[0].children[0].children[0].value }, function () { // U.MD.U.F.setTime($("#U_MD_U_L_Overflow_Code")[0].children[1].children[0]); //60秒倒计时 // U.Alert('发送成功'); //弹出发送成功 // }); } }) } /** * 手机确认验证码 * * @param {element} 确认验证码的按钮 */ U.MD.U.F.phoneConfirm = function (el) { var _xhttp = new XMLHttpRequest(); //XMLHttpRequest 对象用于在后台与服务器交换数据 _xhttp.onreadystatechange = function () {//每当 readyState 属性改变时,就会调用该函数 if (this.readyState == 4) {//验证成功后 if (this.status == 201) { U.MD.U.F.checkSecurityCode(el); //手机号设置 U.Alert("验证成功"); //弹出验证成功 } else { U.Alert(JSON.parse(this.response).err || "验证码有误"); } } }; _xhttp.open("POST", "http://api.cloudsql.1473.cn/verifi", true); ////指定和服务器端交互的HTTP方法,URL地址及其他请求信息 _xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //向一个打开但未发送的请求设置或添加一个 HTTP 请求 _xhttp.withCredentials = true; //发送cookie等认证信息到服务端 _xhttp.send("code=" + $("#U_MD_U_L_Overflow_Code")[0].children[0].children[0].value); //$("#U_MD_U_L_Overflow_Code")[0].children[0].children[0].value 验证码输入的框 } /** * 手机重新发送验证码倒计时 * @param {object} 倒计时的对象 * @param {number} 倒计时的时间(秒数) */ U.MD.U.F.setTime = function (obj, countdown) { var countdown = 60; var _settime = setInterval(function () { //setInterval(需要执行的javascript代码,在执行代码前需等待的毫秒数) if (countdown == 0) { //倒计时变量为0 obj.removeAttribute("disabled"); //让obj可以使用 obj.value = "重新获取验证码"; clearInterval(_settime); //停止倒计时 return; } else {//如果countdown不等于零 每秒countdown会减少1 obj.setAttribute("disabled", true); //禁用obj obj.value = "重新发送(" + countdown + ")"; //显示倒计时的事件 countdown--; //倒计时时间 -1S } }, 1000); } /** * 验证用户名是否存在 * * @param {function} cb 回调函数 */ U.MD.U.F.userName = function (cb) { U.A.Request(US.USER, ["CheckUserName", U_MD_U_L_Box_height.children[0].children[0].value], //验证用户名是否存在 function (r) {//回调函数 var _str = U.UF.C.jsonToStr(r.value); //序列化json为字符串 if (_str == "false") {//如果用户名不存在 U.MD.U.R.setInputStyle(U_MD_U_L_Box_height, {//如果不存在 用户名的框变红色 并且提示 用户名不存在 "color": "red", "textAlign": "right", "display": "block" }, "用户名不存在"); } cb(); //回调函数 }) } /** * 手机号设置处理 * * @param {object} 数据库匹配手机号是否正确 */ U.MD.U.F.phoneCheckSecurityCode = function (r) { var _bottom, _childs, _username = r[2], //输入密码框 _enterpassword = r[3], //确认密码框 _el = $(_username).Parent(4) ; //如果密保匹配成功处理 if (r) { //如果账号和手机号匹配成功的处理 U.MD.U.F.findPasswordProcessing(_el, 1); //手机找回的步骤 _bottom = $(_el.parentNode).Child()[2]; //得到确认框 _childs = $("input", _el); //获取所有的输入 //点击事件处理 _bottom.onclick = function () { U.MD.U.F.setNewUserPassword(r, _childs[1]); //新密码设置 }; } else { //账号或者密保错误 U.MD.U.R.setInputStyle(_enterpassword, {//给_enterpassword 设置 一个红色边框的样式 让用户知道用户输入账号或者密保错误 "color": "red", "textAlign": "right", "display": "block" }, "账号或者密保错误"); } } /** * 新密码设置 * * @param {string} 用户id * @param {string} 密码 * @param {string} 确认密码 * @param {string} 用户id */ U.MD.U.F.setNewUserPassword = function (userinfo, phone) { //判断用户输入的密码是否正确的处理 var _newpassword = userinfo[1].children[1].children[0].children[0].children[0].value; //密码 var _newpasswordt = userinfo[1].children[1].children[1].children[0].children[0].value; //再次输入密码 if (U.MD.U.F.checkConfirmPassword(_newpassword, _newpasswordt)) {//如果 密码和再次输入的密码 相同 U.A.Request(US.USER, ["UpdateUserPasswordByOldPhoneNumber", phone.value, _newpassword], //修改密码 U.MD.U.F.asynSetNewUserPassword); //修改密码成功后执行的函数 } } /** * 新密码设置 * * @param {object} 设置密码成功的异步ajax对象 */ U.MD.U.F.asynSetNewUserPassword = function (r) { if (r.value) { U.alert("修改密码成功,请登录"); U.MD.U.L.login(); //直接回到登录页面 }; } //#endregion //#region 通过邮箱找回 /** * 通过邮箱找回 * * @param {element} 输入框所在的位置 */ U.MD.U.F.findPasswordByEmail = function (el) { var _inputs = $("input", el), _username = _inputs[0], _email = _inputs[1]; //判断是否发送邮箱 if (U.MD.U.F.checkEmail(_email) && U.MD.U.F.checkUserName(_username)) { U.A.Request(US.USER, ["FindPasswordByEmail", _username.value, _email.value], U.MD.U.F.asynFindPasswordByEmail); } } /** * 通过邮箱找回 * * @param {object} ajax返回的值 */ U.MD.U.F.asynFindPasswordByEmail = function (r) { //成功发送 if (r.value == "2") { U.alert("已经发送邮箱,请及时查看密码"); U.MD.U.L.init(); //U.MD.U.L.login(); //直接回到登录页面 } //账号不存在处理 else if (r.value == "0") { U.alert("您输入的账号不存在"); } //邮箱和账号不匹配处理 else if (r.value == "1") { U.alert("邮箱账号不匹配"); } } //#endregion //#region 密码和密保检查 /** * 判断有限是否正确 * * @param {object} 输入用户名的框 */ U.MD.U.F.checkEmail = function (inputel) { var _email = inputel.value; //获取用户名 //输入为空不做变化 if (_email == "") { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'left', 'marginRight': '0px' }, "请输入邮箱"); //输入的用户名为空的样式处理 } //注册的用户不符合要求 else if (!U.UF.S.Email.test(_email)) { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'right' }, "请输入正确邮箱"); //注册用户名不符合提示 } else { return true; } return false; } /** * 手机号输入格式检查 * * @param {object} 输入手机号的框 */ U.MD.U.F.checkPhone = function (inputel) { var _password = inputel.value; //输入手机号的value //如果没有输入手机号 if (_password == "") { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'left', 'marginRight': '0px' }, "请输入手机号"); //没有输入手机号的提示 } //输入的手机号的格式不对 else if (!/^1[3|4|5|8][0-9]\d{4,8}$/.test(_password)) { U.MD.U.R.setInputStyle(inputel, { "display": "block", "color": "red", 'textAlign': 'right' }, "请输入有效手机号"); //输入的手机号有问题 } else { return true; } return false; } /** * 密码输入格式检查 * * @param {object} 输入密码的框 */ U.MD.U.F.checkPass = function (inputel) { var _password = inputel.value; //如果没有输入密码 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.R.setInputStyle(inputel, { "display": "block", "color": "red", 'textAlign': 'right' }, "6-20位字符或数字"); //输入的密码有问题 } else { return true; } return false; } /** * 验证码输入格式 * */ U.MD.U.F.Verification = function (inputel) { var _code = inputel.value; //如果没有输入验证码 if (_code == "") { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'left', 'marginRight': '0px' }, "请输入验证码"); //没有输入验证码的提示 } //输入的验证码的格式不对 else if (!/^\d{4,6}$/.test(_code)) { U.MD.U.R.setInputStyle(inputel, { "display": "block", "color": "red", 'textAlign': 'right' }, "请输入4-6位数的验证码"); //输入的验证码有问题 } else { return true; } return false; } /** * 判断输入框的值是否是账号或者邮箱 * */ U.MD.U.F.checkUserName = function (inputel) { var _username = inputel.value; //获取用户名 //输入为空不做变化 if (_username == "") { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'left', 'marginRight': '0px' }, "云端账号"); //输入的用户名为空的样式处理 } //注册的用户不符合要求 else if (!U.UF.S.UserName.test(_username)) { U.MD.U.R.setInputStyle(inputel, { "display": "block", 'textAlign': 'right' }, "4-14位数字或者字母"); //注册用户名不符合提示 } else { return true; } return false; } /** * 判断输入密码和确认密码是否一致处理 * * @param {element} 密码 * @param {element} 确认密码 */ U.MD.U.F.checkConfirmPassword = function (inputo, inputt) { var _password = inputt.value; //如果没有输入密码 if (_password == "") { U.MD.U.R.setInputStyle(inputt, { "display": "block", 'textAlign': 'left', 'marginRight': '0px' }, "6-20位字符或数字"); //没有输入密码的提示 } //输入的密码的格式不对 else if (!U.UF.S.PassWord.test(_password)) { U.MD.U.R.setInputStyle(inputt, { "display": "block", "color": "red", 'textAlign': 'right' }, "6-20位字符或数字"); //输入的密码有问题 } //输入密码和确认密码不相同 else if (inputo.value != inputt.value) { U.MD.U.R.setInputStyle(inputt, { "display": "block", "color": "red", 'textAlign': 'right' }, "密码不一致"); //输入的密码有问题 } else { return true; } return false; } //#endregion