我想返回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。但是在警报之后发布了表单。我没错。
答案 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;
}
}
现在它正在运作。