2

我想返回 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。但是表格是在警报之后发布的。我不知道有什么问题。

4

3 回答 3

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;
        }
    }

现在它正在工作。

于 2012-10-24T11:37:16.737 回答
0

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

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

  ..

</form>

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

于 2012-10-24T11:04:45.997 回答
0

如果我没有错,那么您所犯的错误是您认为:

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

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

于 2012-10-24T11:01:12.307 回答