0

我有以下 javascript 代码来验证带有用户名和密码的简单登录表单 - 如果这有所不同,它就是 asp.net 自定义验证器的客户端验证。

    function userValidation(source, arguments) {
        if (arguments.Value != "" && arguments.Value != "User name") {
            if($(source).parents(".loginPanel").find(".errorAsterisk[style*='visible']").length==0) {
                $(source).parents(".loginPanel").css({ "background-color": "" });
            }
            arguments.IsValid = true;
        } else {
            $(source).parents(".loginPanel").css({ "background-color": "#ECC8C8" });
            arguments.IsValid = false;
        }
    }


    function passwordValidation(source, arguments) {
        var passVal = /^((?![<>]).){1,64}$/;
        if (arguments.Value != "" && arguments.Value != "Password" && passVal.test(arguments.Value)) {
            if($(source).parents(".loginPanel").find(".errorAsterisk[style*='visible']").length==0) {
                $(source).parents(".loginPanel").css({ "background-color": "" });
            }
            arguments.IsValid = true;
        } else {
            $(source).parents(".loginPanel").css({ "background-color": "#ECC8C8" });
            arguments.IsValid = false;
        }
    }

我还希望在用户成功填写表格时出现“正在加载”消息 - 这是我的代码......

    $(".loginPanel").on("click", "input[id*='Login']", function() {
        loadingPage2("", "Logging in...");
    });

问题是,即使页面无效,加载功能也会运行。

我可以包含它的任何想法,以便它仅在一切有效的情况下运行?

谢谢

4

2 回答 2

2

无需查看更多代码,您可以执行以下操作:

var x = [];
function userValidation(source, arguments) {
        if (arguments.Value != "" && arguments.Value != "User name") {
            if($(source).parents(".loginPanel").find(".errorAsterisk[style*='visible']").length==0) {
                $(source).parents(".loginPanel").css({ "background-color": "" });
            }
            arguments.IsValid = true;
            x.push(true);
        } else {
            $(source).parents(".loginPanel").css({ "background-color": "#ECC8C8" });
            arguments.IsValid = false;
        }
    }


    function passwordValidation(source, arguments) {
        var passVal = /^((?![<>]).){1,64}$/;
        if (arguments.Value != "" && arguments.Value != "Password" && passVal.test(arguments.Value)) {
            if($(source).parents(".loginPanel").find(".errorAsterisk[style*='visible']").length==0) {
                $(source).parents(".loginPanel").css({ "background-color": "" });
            }
            arguments.IsValid = true;
            x.push(true);
        } else {
            $(source).parents(".loginPanel").css({ "background-color": "#ECC8C8" });
            arguments.IsValid = false;
        }
    }

function loading(){
    var confirmx = true;
    for (var i = 0; i < x.length; i++) {
        if (x[i] != true) {
            confirmx = false;
        }
    }
    if (confirmx){
        $(".loginPanel").on("click", "input[id*='Login']", function() {
            loadingPage2("", "Logging in...");
        });
    }
}
loading();  // run it!

您唯一需要检查的是此代码在所有验证功能之后运行。所以把这段代码放在脚本的末尾。

于 2013-07-19T12:57:31.680 回答
0

有多种方法可以实现这一目标。最简单的方法是设置一个全局变量 eq success。在事件处理程序中,只需检查此变量的值。

于 2013-07-19T12:57:50.040 回答