验证输入和复选框

时间:2016-01-22 16:41:08

标签: javascript validation

我有一个表单,我需要只验证选中的复选框,填写文件和文本输入。我的问题是当选中两个或更多复选框并且正确填充了一行,但是其他或其他行未正确填充时,它会提交一些错误。

我一直在寻找没有运气的解决方案,这是我的代码:

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();
 }

});
}  

编辑:

ERROR

如果选中了两个复选框,则会填写一个复选框,但另一个复选框为空白,它会向我显示错误&重点,但它提交,表单完成工作,结果我得到sql警告,电子邮件填充空白,输入应填写

1 个答案:

答案 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();
  }
}