2011-01-05 211 views
0

您好所有我有2组的复选框被一直视代码生成工具生成以下HTML复选框验证

我有以下JS验证动态生成通过Java该复选框的ATLEAST一个是从每一行中选择不工作我知道如果我们给它相同的名称,它会工作,只是想检查是否有任何工作,为这与名称已更改

我不能使用JQUERY由于某些限制

function validate() 
{ 
     var e = document.form.elements; 
    for (var elem, i = 0; (elem = e[i]); i++) 
    { 
     if ( elem.type == 'checkbox') 
     { 
      if (!checkCheckBox (form, elem)) 
      { 
       alert('Please check atleast one checkbox.'); 
       return false; 
      } 
     } 
    } 
    document.form.submit(); 
    return true; 
} 

function checkCheckBox (form, elem) 
{ 
    var check= form.elements[elem.name]; 
    var flag = false; 
    for (var i=0; i <check.length; i++) 
    { 
     //alert(" radios[i].checked "+elem[i].checked); 
     if (check[i].checked) 
     { 
      flag = true; 
      break; 
     } 
    } 
} 





    <form name="form"> 
<table> 
<tr bgcolor='lightgray' width='100%' colspan='3'><td>KS3 QCheckbox 1</td></tr><tr><td> 
<input type="checkbox" name="form[checkbox][KS31][KS31 1][]" id="COption 1" value="Option 1" /> 
<input type="checkbox" name="form[checkbox][KS31][KS32 1][]" id="COption 2" value="Option 2" /> 
<input type="checkbox" name="form[checkbox][KS31][KS33 1][]" id="COption 3" value="Option 3" /> 

<tr bgcolor='lightgray' width='100%' colspan='3'><td>KS3 QCheckbox 2</td></tr><tr><td> 
<input type="checkbox" name="form[checkbox][KS32][KS31 2][]" id="COption 1" value="Option 1" /> 
<input type="checkbox" name="form[checkbox][KS32][KS32 2][]" id="COption 2" value="Option 2" /> 
<input type="checkbox" name="form[checkbox][KS32][KS33 2][]" id="COption 3" value="Option 3" /> 

<input type="submit" onClick="validate()"> 
</table> 
</form> 
+0

为什么你不能使用JQuery?有什么限制?只是好奇。 – jmort253 2011-01-05 02:28:36

+0

对于*不使用jQuery,您有什么限制? – 2011-01-05 02:28:43

+0

我在Blackbery 5上使用这个脚本,而Blackberry 5不支持JQUERY我们正在使用Rhodes框架 – 2011-01-05 16:34:31

回答

2

我想你checkCheckBox函数必须返回的变量“标志”的内容:

function checkCheckBox (form, elem) 
{ 
    var check= form.elements[elem.name]; 
    var flag = false; 
    for (var i=0; i <check.length; i++) 
    { 
    //alert(" radios[i].checked "+elem[i].checked); 
    if (check[i].checked) 
     { 
     flag = true; 
     break; 
     } 
    } 
    return flag; // return true or false 
} 
+0

这里的问题是复选框的分组,我想验证第一组复选框,这些复选框由名称
form [复选框] [KS31],这样至少有一个复选框被选中,上面循环的问题是它将遍历所有的复选框,并且如果任何一个复选框没有被选中,它仍然会抛出异常,你需要选择至少一个复选框 – 2011-01-05 16:36:28

-1
var chk = document.getElementsByName('checkbox_name[]'); 
    var len = chk.length; 
    var has_program = false; 
for(i=0;i<len;i++) { 
    if(chk[i].checked) { 
     has_program = true; 
     break;  
     } 
} 
if(!has_program) 
    { 
      alert("field with * is required"); 
     return false; 
    }