我有一个表单,我需要只验证选中的复选框,填写文件和文本输入。我的问题是当选中两个或更多复选框并且正确填充了一行,但是其他或其他行未正确填充时,它会提交一些错误。
我一直在寻找没有运气的解决方案,这是我的代码:
function send()
{
$('input[type=checkbox]:checked').each(function () {
var vals = $(this).val();
var arch = document.getElementById(vals);
var rcant = document.getElementById("ke"+vals);
if(arch.value==""){
arch.required = true;
alert("Please select the file to send");
arch.focus();
}else
if(rcant.value==""){
rcant.required = true;
alert("Please write the quantity to send");
rcant.focus();
}
if(arch.value != "" && rcant.value != "")
{
formula.submit();
}
});
}
编辑:
如果选中了两个复选框,则会填写一个复选框,但另一个复选框为空白,它会向我显示错误&重点,但它提交,表单完成工作,结果我得到sql警告,电子邮件填充空白,输入应填写
答案 0 :(得分:2)
问题是您在.each()
循环中提交表单,因此一旦找到一个正确填写其输入的复选框,它就会提交。
相反,使用变量来跟踪在循环期间是否发现任何验证错误。然后检查循环结束时的变量。
function send() {
var form_ok = true;
$('input[type=checkbox]:checked').each(function() {
var vals = $(this).val();
var arch = document.getElementById(vals);
var rcant = document.getElementById("ke" + vals);
if (arch.value == "") {
arch.required = true;
alert("Please select the file to send");
arch.focus();
form_ok = false;
return false; // stop looping once we find an error
} else
if (rcant.value == "") {
rcant.required = true;
alert("Please write the quantity to send");
rcant.focus();
form_ok = false;
return false; // stop looping once we find an error
}
});
if (form_ok) {
formula.submit();
}
}