“回归虚假;”表单提交不起作用

时间:2012-04-07 15:56:52

标签: javascript jquery

“返回false;”表单提交正在为我的其余代码工作,而不是本节。有什么想法吗?

function checkForm() {
    $("select[name*=lic_company]").each(function() {
        if($(this).val() != '') {
            var i1 = $(this).parent("td").next("td").children("select");
            var i2 = i1.parent("td").next("td").children("input");
            var i3 = i2.parent("td").next("td").children("input");
            if(i1.val() == '') {
                i1.parent("td").addClass("formErrorTD");
                i1.addClass("formError");
                alert("You must enter a state for this license");
                return false;
            }
            if(i2.val() == '') {
                i2.parent("td").addClass("formErrorTD");
                i2.addClass("formError");
                alert("You must enter an expiration date for this license");
                return false;
            }
            if(i3.val() == '') {
                i3.parent("td").addClass("formErrorTD");
                i3.addClass("formError");
                alert("You must enter a license number for this license");
                return false;
            }
        }
    });
}

它被

调用
$("#addAgentForm").submit(checkForm);

3 个答案:

答案 0 :(得分:3)

您在一个闭包中调用return false;,该闭包是传递给.each的参数。因此,.each正在捕获return false;。要解决此问题,您需要一个包含表单状态的布尔标志:

function checkForm() {
    var okay = true;

    $("select[name*=lic_company]").each(function() {
    ...
        return okay = false;
    ...
    });

    return okay;
}

一切都会正常。

答案 1 :(得分:1)

您的return false语句位于传递给.each()的匿名函数内,因此只返回该函数的值,而不是整个checkForm()的调用。

答案 2 :(得分:0)

如果我不得不猜测,那是因为你从传递给你的每个调用的函数返回,这意味着当你的主验证函数顺利完成时,你正在做的就是退出你的每个函数。