0

我有一个表单,其中包含许多输入字段。当用户单击提交按钮时,我想验证用户输入。因为这个表单(假设它类似于简历)可能包含一些相似的字段,例如年份、学校、文凭等。所以我使用 JQuery属性选择器来选择这些相似的字段,并使用 JQuery的每个函数对其进行迭代以进行验证。我的代码如下所示。

$("#submit_btn").click(function () {
            $('input[name="education_year[]"]').each(function(){
                if (!$(this).val()) {
                    alert("education year is empty !");
                    return;
                }
            });

            $('input[name="diploma[]"]').each(function(){
                if (!$(this).val()) {
                    alert("diploma field is empty");
                    return;
                }
            });
        });

因为用户可能会将几个字段留空,所以我希望我的代码只发出一个警报。但是,在上面的代码中,return关键字没有帮助。在我看来,退出each函数更像是一个break语句。谁能告诉我如何结束点击功能?

4

3 回答 3

2

尝试

$("#submit_btn").click(function () {
    var valid = true;
    $('input[name="education_year[]"]').each(function(){
        if (!$(this).val()) {
            alert("education year is empty !");
            valid = false;
            return false;
        }
    });

    if(!valid){
        return;
    }

    $('input[name="diploma[]"]').each(function(){
        if (!$(this).val()) {
            alert("diploma field is empty");
            valid = false;
            return false;
        }
    });
});
于 2013-05-09T12:40:59.067 回答
1

return在您的代码中将简单地停止执行循环中的当前迭代并移至下一个。您需要存储一个包含验证状态的变量并检查它。试试这个:

$("#submit_btn").click(function () {
    var isValid = true;

    $('input[name="education_year[]"]').each(function(){
        if (!$(this).val() && isValid) {
            alert("education year is empty !");
            isValid = false;
        }
    });

    $('input[name="diploma[]"]').each(function(){
        if (!$(this).val() && isValid) {
            alert("diploma field is empty");
            isValid = false;
        }
    });
});
于 2013-05-09T12:43:29.510 回答
0

你可以返回真;或返回假;在提交上选择提交是否在您的逻辑之后继续。

于 2013-05-09T12:41:41.390 回答