返回false不退出foreach循环
我想返回false或打破foreach循环。但它不起作用。 这是我试过的代码。返回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。但表单在警报后发布。我没有什么错。
如果我没看错,你可以将这个错误是,你认为这样的:
if($(this).val()=="0"){
alert("Please select hotel category");
city.click();
//validate="false";
return false;
}
将防止click处理程序可以发布形式。返回false部分需要在提交表单之前调用的事件处理程序中发生。
把处理表单中的标签,像这样:
<form onsubmit="return validate();" method="POST" action="post.php">
..
</form>
然后,它会被调用上提交,如果你在你的函数返回false,它会阻止从形式提交。
我已经这样做了。我的问题是在if循环不返回false或阻止发布页面时返回false。 – asifa
hotelcategory未通过验证? –
你的问题是你从循环返回。看到这个例子:http://jsfiddle.net/ZBhsy/4/对于一个工作场景 –
谢谢大家。我修改了我的代码
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;
}
}
现在它工作。
你的'foreach'循环在哪里!? –
这太棒了:'var validate =“false”'!请注意,JavaScript中有一个[布尔类型](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof)。 – VisioN
为什么不使用'break'? –