不能在按提交的时候统一进行验证吗?如果不能,那就只能凭借onblur或者onclick来处理验证。

解决方案 »

  1.   

    不能用遍历吗?
    遍历table里的tr行,得到字元素childNode,再根据类型判断是checkbox or text 根据是否有值,来做验证。
      

  2.   

    还有不确定数量的checkbox(但是第一行到第十行checkbox的数量都是一样的) 不明白这句是什么意思?
      

  3.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <script type="text/javascript">
    function checks(){
    var tb = document.getElementById("table1").firstChild;
    var idCards = document.getElementsByName("sfzhm");
    var names = document.getElementsByName("name");
    var isOk = false;
    for (var i = 0; i < tb.childNodes.length; i++) {
    var checkBoxs = document.getElementsByName("checkBox_"+i);
    var isInput1 = idCards[i].value == "" ? false : true;
    var isInput2 = names[i].value == "" ? false : true;
    var isInput3 = false;
    for (var j = 0; j < checkBoxs.length; j++) {
    if (checkBoxs[j].checked) {
    isInput3 = true;
    }
    }
    //一行中的三项没有全填 并且 不是一行中三项都没有填(也就是说该行有一项或者两项没填)
    if (!(isInput1 && isInput2 && isInput3) && !(!isInput1 && !isInput2 && !isInput3)) {
    alert("请将第 " + (i+1) + " 行中的数据填写并选勾完整!");
    return false;
    }
    //一行中三项全有填写的话就标记为可以提交
    if (isInput1 && isInput2 && isInput3) {
    isOk = true;
    }
    }
    if (!isOk) {
    alert("您没有填写任何数据!\n\n  请填写数据后再提交。");
    return false;
    }
    return true;
    }
      </script>
     </HEAD>
     <BODY>
    <br/><br/><br/><br/><br/><br/>
    <form action="" method="post" name="form1" onsubmit="return checks();">
    <table border=1 align=center id="table1">
    <tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_0"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_0"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_1"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_1"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_2"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_2"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_3"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_3"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_4"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_4"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_5"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_5"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_6"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_6"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_7"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_7"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_8"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_8"/>放火</td></tr><tr><td>身份证号<input type=text name="sfzhm"/></td><td>姓名<input type=text name="name"/></td><td><input type="checkbox" value="0" name="checkBox_9"/>杀人&nbsp;<input type="checkbox" value="1" name="checkBox_9"/>放火</td></tr>
    </table>
    <div align=center><br/><input type="submit" value=" 提 交 "/></div>
    </form>
     </BODY>
    </HTML>IE7下测试通过
      

  4.   

    其实每个都设一个id也可以啊(identity0,name0,check1_0,check2_0,check3_0),(identity1,name1,check1_1,check2_1,check3_1)...(identity9,name9,check1_9,check2_9,check3_9)
    for(var n=0;n<10,n++){
       var identity = document.getElementById("identity"+n).value==''?false:true;
       var name = document.getElementById("name"+n).value==''?false:true;
       var check = false;
       for(var i=1;i<4;i++){
          if(document.getElementById("check"+i+"_"+n).checked){
             check = true;
          }
       }
       if(identity&&(!name||!check)){
          alert('请填写姓名和勾选框');
       }
       ...//如此类推
    }
      

  5.   

    比如说 第一行 checkbox的数量有时候有两个 ,有时候有三个,(第一行到第十行checkbox的数量都是一样的 )就是说 第一行数量是两个 其它行也是两个 ,第一行是三个的其它行 也是三个.我想要的验证效果就是jiduomi123  给的代码 那样的效果.谢谢大家!!