2011-01-05 251 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; 
    }