jQuery返回false而不是停止查询运行

时间:2013-09-07 12:19:46

标签: jquery foreach return

我有以下代码:

    else if($page == 'two'){
        $('[name^=q1\\[\\]] option:selected').each(function() {
            if ($(this).val() < 1) {
                $('#rq1').addClass('hovered_error');
                $('#mandall').css("background-color","#901F39");
                $('#mandall').css("color","#FFF");
                return false;
            }
        });
    }

如果.val小于1,应该怎么办 - 它应该添加类,更改ID #mandall的css然后停止查询。

实际发生的是,它添加了类并更改了#mandall的CSS,然后继续提交表单 - 当它不应该 - 我缺少什么?

2 个答案:

答案 0 :(得分:4)

当您从return false;循环内部呼叫.each()时,您实际上只是突破了.each

您需要在return false;之外的某个地方拨打.each来停止提交表单,例如

var doSubmit = true;
$('[name^=q1\\[\\]] option:selected').each(function() {
        if ($(this).val() < 1) {
          doSubmit = false;
          return false;
        }
});
if(!doSubmit) return false;

答案 1 :(得分:3)

这是因为您从回调方法(each)返回值,这不会导致从调用方法(您的提交回调)返回。

else if($page == 'two'){
    var valid = true;
    $('[name^=q1\\[\\]] option:selected').each(function() {
        if ($(this).val() < 1) {
            $('#rq1').addClass('hovered_error');
            $('#mandall').css("background-color","#901F39");
            $('#mandall').css("color","#FFF");
            valid = false;
            return false;
        }
    });
    if(!valid){
        returnf false;
    }
}