我有一个表单,我只需要验证选中的复选框,即会填充其文件和文本输入。我的问题是,选中两个或多个复选框并且正确填充了一行,但另一行或其他未正确填充时,它提交了一些错误。
我一直在寻找一个没有运气的解决方案,这是我的代码:
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警告,电子邮件中填充了空格,输入应变得充实
问题是您在.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();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句