/// /// /* * 功能:登录 * 参数:userName--用户名 * pass--密码 * 作者:李建峰 * 时间:2016-3-18 */ function FastLogin(userName, pass) { /* * 获取用户名 */ this.getUserName = function () { return userName; } /* * 获取用户名 */ this.getPass = function () { return pass; } var _message = []; /* * 获取提示信息 */ this.getMessage = function () { return _message; } /* * 登录 * 参数:callbacks--回调函数集合 * { * vakidateFaild:function(message){} * beginSignIn:function(){}, * signInSuccess:function(argument){}, * signInFaild:function(message){} * } * argument--回调成功参数 */ this.signIn = function (callbacks, argument) { var success = validate(); if (!success) { callbacks.validateFaild(_message); return false; } callbacks.beginSignIn(); $.ajax({ url: "/UserProfile/MemberLogin.ashx", data: { userName: userName, password: pass }, type: "Post", dataType: "json", success: function (data) { if (data.status == true) { callbacks.signInSuccess(argument); } else { callbacks.signInFaild(data.msg); } }, error: function () { callbacks.signInFaild("登录异常"); } }); return true; } /* * 验证 */ validate = function () { var success = true; if (!userName) { _message.push("用户名不能为空"); success = false; } if (!pass) { _message.push("密码不能为空"); success = false; } return success; } } /* * 功能:登录视图 * 参数:$element--登录视图父元素 * 作者:李建峰 * 时间:2016-3-18 */ function LoginView($element) { var _callBack /* * 登录 *参数:callBack--回调函数 * argument--回调函数的参数 */ this.signIn = function (callBack, argument) { var userName = $element.find(":text[data-field='username']").val(); var pass = $element.find(":password[data-field='pass']").val(); var login = new FastLogin(userName, pass); _callBack = callBack; login.signIn({ validateFaild: validateFaild, beginSignIn: beginSignIn, signInSuccess: signInSuccess, signInFaild: signInFaild }, argument); } /* * 自动填充用户名和密码 */ this.autoFill = function (userName, pass) { $element.find(":text[data-field='username']").val(userName); $element.find(":password[data-field='pass']").val(pass); } /* * 初始化 */ this.init = function () { $element.dialog({ modal: true, width: "620px", dialogClass: "noneframe", open: function () { $element.attr("class", "popbuy"); } }); } /* * 关闭 */ this.close = function () { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $element.dialog("close"); } /* * 设置登录成功后的回调函数 * 参数:argument--回调函数的参数 */ signInSuccess = function (argument) { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $element.dialog("close"); argument["isSigIn"] = true; //强制刷新登录标记 $("[data-sigin]").attr("data-sigin", true); if (_callBack) { if (typeof (_callBack) == "function") { _callBack(argument); } else { if (Object.prototype.toString.call(_callBack) == "[object Array]") { var len = _callBack.length; for (var i = 0; i < len; i++) { _callBack[i](argument); } } } } } /* * 验证失败 * 参数:message--提示信息,数组 */ validateFaild = function (message) { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); var len = message.length; for (var i = 0; i < len; i++) { $ul.append("
  • " + message[i] + "
  • "); } } /* * 开始登录 */ beginSignIn = function () { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $ul.append("
  • 开始登录,请等待...
  • "); $element.find(":button[data-field='submit']").prop("disabled", true); } /* * 登录失败 */ signInFaild = function (msg) { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $ul.append("
  • " + msg + "
  • "); $element.find(":button[data-field='submit']").prop("disabled", false); } } /* * 生成登录视图对象 * 参数:$element---登录视图父元素 * callBack--登录成功后的回调函数 * argument--登录成功后的调函数的参数 */ function buildLoginView($element, callBack, argument) { var loginView = new LoginView($element); var $sender = $element.find(":button[data-field='submit']"); $sender.unbind("click"); //绑定登录事件 $sender.click(function () { loginView.signIn(callBack, argument); }); //绑定登录关闭事件 var $close = $element.find("b[data-field='close']"); $close.unbind("click"); $close.click(function () { loginView.close(); }); var $register = $element.find("a[data-field='fast-register']"); $register.unbind("click"); $register.click(function () { var fastRegisterView = new buildRegisterView($("#dv_register"), null, null); fastRegisterView.init([loginView.signIn, loginView.autoFill], { callBack: callBack, arguments: argument }); }); return loginView; }