验证复选框和输入

Validating check box and input

本文关键字:输入 复选框 验证      更新时间:2023-09-26

我有一个表单,其中包括几个文本输入和复选框(复选框来自DB),所以…我知道如何分别验证它们,但我需要一起验证它们,我这样做的方式只验证复选框,我知道为什么会这样,但我不知道如何写正确的方式…你能帮我吗?下面是代码:

<form action="sendreq.php" name="contact" onsubmit="return valida_frm(this)" method="post">
                <label>Name</label>
                <input name="name" type="text" />
                <label>Email</label>
                <input name="email" type="text"/><!-- And Severeal inputs then the checkboxes-->
<?php $list3 = mysql_query("SELECT * FROM products ORDER BY id ASC LIMIT 20"); 
                    while($row = mysql_fetch_object($list3)){ ?>

                <input id="product" name="product[]" class="label" type="checkbox" value="<?php echo $row->name?>"><label class="label"><?php echo $row->name?></label>                    
                <?php }?>

验证不能正常工作,原因很明显,我只需要正确的方法来编写和统一警报的返回:

function valida_frm(form){
var alerta="Ooops:'n";
if (form.name.value == "") {alerta+="Name.'n";} 
if (form.email.value == "") {alerta+="Email.'n";}
for(var i = 0; i < form.product.length; i++){ 
    if(form.product[i].checked)return true;} 
    alert('Oooops'); 
    return false;   
if (alerta!="Error:'n"){
    alert(alerta);  
    return false;
}else{
    return true;
}   
}

谢谢你的时间!

不要为"name"调用字段,然后测试form.name,因为它已经有一个。name

然后测试表单["product[]"]而不是表单。product -你不能让id="product",因为id必须是唯一的!我建议你给id="product<?echo $somecounter; ?>" />...<label for="product<? echo $somecounter; ?>">...</label>

也测试错误(或什么都没有,在我的建议),而不是Oops

还修复了更多问题

演示
function valida_frm(form){
  var alerta="";
  if (form.name.value == "") {alerta+="Name.'n";}  // Please use FullName or such
  if (form.email.value == "") {alerta+="Email.'n";}
  var chks = form["product[]"],
      checked = false;
  for(var i = 0; i < chks.length; i++) { 
    if(chks[i].checked) {
      checked = true;
      break;
    }
  } 
  if (!checked) {
    alerta+='Product.'n'; 
  }  
  if (alerta){
    alert("Error:'n"+alerta);  
    return false;
  }
  return true;
}