0

“返回错误;” 因为表单提交适用于我的其余代码,而不是本节。任何想法为什么?

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);
4

3 回答 3

3

您正在return false;一个闭包内调用,该闭包是传递给.each. 因此,.each正在捕获return false;. 为了解决这个问题,您需要一个布尔标志来保存表单的状态:

function checkForm() {
    var okay = true;

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

    return okay;
}

一切都会正常工作。

于 2012-04-07T16:00:08.657 回答
1

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

于 2012-04-07T16:00:07.820 回答
0

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

于 2012-04-07T16:01:04.673 回答