我有以下代码:
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,然后继续提交表单 - 当它不应该 - 我缺少什么?
答案 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;
}
}