锘?// /// /* * Function: Login * Parameters: userName--username * Pass--password * Author: Li Jianfeng * Time: 2016-3-18 */ function FastLogin(userName, pass) { /* * Get username */ this.getUserName = function () { return userName; } /* * Get username */ this.getPass = function () { return pass; } var _message = []; /* * Get tips */ this.getMessage = function () { return _message; } /* * log in * Parameters: callbacks--callback function collection * { * vakidateFaild:function(message){} * beginSignIn:function(){}, * signInSuccess:function(argument){}, * signInFaild:function(message){} * } * Argument--callback success parameter */ 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 { if (data.code == 0) { //callbacks.signInFaild("Login failed, user name or password error"); callbacks.signInFaild("Incorrect user name or password. Please try again."); } else if (data.code == -1) { callbacks.signInFaild("Login failed, account status anomaly!"); } } }, error: function () { callbacks.signInFaild("Login failed, login exception!"); } }); return true; } /* * verification */ validate = function () { var success = true; _message = []; $("li[data-field='errormsg']").remove(); if (!userName) { if (_message.length == 0) { _message.push("user name cannot be empty"); } $("#dv_login").find("input[data-field='username']").addClass("error"); success = false; } else { $("#dv_login").find("input[data-field='username']").removeClass("error"); } if (!pass) { if (_message.length == 0) { _message.push("password cannot be empty"); } $("#dv_login").find("input[data-field='pass']").addClass("error"); success = false; } else { $("#dv_login").find("input[data-field='pass']").removeClass("error"); } return success; } } /* * Function: login view * Parameters: $element--Login view parent element * Author: Li Jianfeng * Time: 2016-3-18 */ function LoginView($element) { var _callBack /* * log in *Parameters: callBack--callback function * Argument - the parameters of the callback function */ 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); } /* * Automatically populate username and password */ this.autoFill = function (userName, pass) { $element.find(":text[data-field='username']").val(userName); $element.find(":password[data-field='pass']").val(pass); } /* * initialization */ this.init = function () { $element.dialog({ modal: true, width: "620px", dialogClass: "noneframe", open: function () { $element.attr("class", "popbuy"); } }); } /* * shut down */ this.close = function () { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $element.dialog("close"); $("input[data-submit='true']").attr("disabled", false); $("input[data-submit='true']").attr("style", "background:#e84e2b"); } /* * Set the callback function after successful login * Parameters: argument - the parameters of the callback function */ signInSuccess = function (argument) { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); $element.dialog("close"); argument["isSigIn"] = true; //Force refresh login token $("[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); } } } } } /* * verification failed * Parameters: message--prompt information, array */ validateFaild = function (message) { var shtml = '
  • !' + message.join("") + '
  • '; $("li[data-field='li_login']").before(shtml); } /* * Start signing in */ beginSignIn = function () { var $ul = $element.find("ul[data-field='message']"); $ul.find("li").remove(); //$ul.append("
  • Login, please wait...
  • "); $element.find(":button[data-field='submit']").prop("disabled", true); } /* * Login failed */ //signInFaild = function (msg) { // $("li[data-field='errormsg']").remove(); // var shtml = '
  • !' + msg + '
  • '; // $("li[data-field='li_login']").before(shtml); // $element.find(":button[data-field='submit']").prop("disabled", false); //} signInFaild = function (msg) { $("li[data-field='errormsg']").remove(); $(".lop").remove(); var shtml = '
    ' + msg + '
    '; $("ul[data-field='ul_login']").before(shtml); $element.find(":button[data-field='submit']").prop("disabled", false); } } /* * Generate a login view object * Parameters: $element---Login view parent element * callBack--callback function after successful login * Argument--parameters of the tuning function after successful login */ function buildLoginView($element, callBack, argument) { var loginView = new LoginView($element); var $sender = $element.find(":button[data-field='submit']"); $sender.unbind("click"); //Bind login event $sender.click(function () { loginView.signIn(callBack, argument); }); //Bind login close event 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; }