我想要做的是:首先,函数validate()
必须逐个检查所有输入:如果它们不是空的(或空格),则转到if语句(用于检查单选按钮)但是如果一些输入为空,然后停止整个验证功能,并专注于空输入。
结果如下:http://jsfiddle.net/tt13/y53tv/4/
只需按ok
按钮,您就会看到它已完成第一个功能,如果也是,则会触发。但我想退出整个validate()函数,以防有空字段,而不仅仅是来自each()函数
JS
function validate() {
$('.var_txt').each(function() {
if ($.trim($(this).val()) == '') {
$(this).focus();
return false;
}
});
if (!$(".answer:checked").val()) {
alert("boom");
return false;
}
return true;
}
$(document).ready(function() {
$("#add_question").submit(function(e) {
if (validate()) {
alert("good");
}
e.preventDefault();
})
});
HTML标记
<form id="add_question" method="post" action="">
<table>
<tr>
<td class="var_label">
<input class="answer" type="radio" name="answer" value="a" /> a)
</td>
<td>
<input type="text" class="var_txt" name="var_a" />
</td>
</tr>
<tr>
<td class="var_label">
<input class="answer" type="radio" name="answer" value="b" /> b)
</td>
<td>
<input type="text" class="var_txt" name="var_b" />
</td>
</tr>
<tr>
<td class="var_label">
<input class="answer" type="radio" name="answer" value="c" /> c)
</td>
<td>
<input type="text" class="var_txt" name="var_c" />
</td>
</tr>
<tr>
<td class="var_label">
<input class="answer" type="radio" name="answer" value="d" /> d)
</td>
<td>
<input type="text" class="var_txt" name="var_d" />
</td>
</tr>
<tr>
<td class="var_label">
<input class="answer" type="radio" name="answer" value="e" /> e)
</td>
<td>
<input type="text" class="var_txt" name="var_e" />
</td>
</tr>
</table>
<input type="submit" name="submit" value="ok" />
</form>
答案 0 :(得分:22)
添加一个必须为false的标志才能继续。
function validate() {
var invalid = false;
$('.var_txt').each(function() {
if ($.trim($(this).val()) == '') {
$(this).focus();
invalid = true;
return false;
}
});
if (invalid) {
return false;
}
if (!$(".answer:checked").val()) {
alert("boom");
return false;
}
return true;
}
$(document).ready(function() {
$("#add_question").submit(function(e) {
if (validate()) {
alert("good");
}
e.preventDefault();
})
});
答案 1 :(得分:4)
我们可以通过使回调函数返回false来在特定迭代中中断$ .each()循环。返回非false与for循环中的continue语句相同;它将立即跳到下一次迭代。
在验证开始时设置一个标记:var broken = false;
。在each
内,return false;
之前,添加broken = true;
。然后在您的each
代码后添加if( broken) return false;
答案 2 :(得分:1)
喜欢那个?
function validate() {
var pass = true;
$('.var_txt').each(function() {
if ($.trim($(this).val()) == '') {
$(this).focus();
pass = false;
return false;
}
});
if (!$(".answer:checked").val()) {
alert("boom");
pass = false;
return false;
}
return pass;
}
添加一个变量,检查条件是否为真。