return false不退出foreach循环

时间:2012-10-24 10:53:18

标签: jquery

我想返回false或者打破foreach循环。但它没有用。 这是我试过的代码。

 function validate()
    {
        var validate="false";
        var atLeastOneIsChecked =  $("input[name='city[]']").is(":checked");
        if(atLeastOneIsChecked==true){

            $("input:checkbox[name='city[]']:checked").each(function(j){
                var city=$(this);

                $('select[name="category[]"]').each(function(i){

                    if(i==j){
                         if($(this).val()=="0"){
                         alert("Please select hotel category");
                         city.click();
                           //validate="false";
                            return false;
                       }
                        else
                        {
                            validate="true";
                        }

                    }
    // return false;
                }); 
                alert(j);
               // return false;
            });
            //return false;
        }
        else
        {
            alert('Please select atleast one city.');
            validate="false";
        }
        if(validate=="true"){
            return true;
        }
        else
        {
            return false;
        }
    }

在“请选择酒店类别”之后,该函数应返回false。但是在警报之后发布了表单。我没错。

3 个答案:

答案 0 :(得分:0)

如果我没有错,你所犯的错误就是你认为:

if($(this).val()=="0"){
    alert("Please select hotel category");
    city.click();        
    //validate="false";
    return false;
}

将阻止点击处理程序发布表单。返回false部分需要在提交表单的事件处理程序之前调用。

答案 1 :(得分:0)

将处理程序放在表单标记中,如下所示:

<form onsubmit="return validate();" method="POST" action="post.php">

  ..

</form>

然后它会在提交时被调用,如果你在函数中返回false,它将阻止表单提交。

答案 2 :(得分:0)

谢谢大家。我修改了我的代码

function validate()
    {
        var validate="false";
        var atLeastOneIsChecked =  $("input[name='city[]']").is(":checked");
        if(atLeastOneIsChecked==true){

            $("input:checkbox[name='city[]']:checked").each(function(j){
                var city=$(this);
                $('select[name="category[]"]').each(function(i){
                    if(i==j){
                        if($(this).val()=="0"){
                            alert("Please select hotel category");
                            city.click();
                            city.attr('checked', true);
                            validate="false";
                            return false;
                        }
                        else
                        {
                            validate="true";
                        }
                    }
                }); 
                if(validate=="false"){
                    return false;
                }
            });
        }
        else
        {
            alert('Please select atleast one city.');
            validate="false";
        }
        if(validate=="true"){
            return true;
        }
        else
        {
            return false;
        }
    }

现在它正在运作。