Hello All我有两组复选框,这些复选框是通过java动态生成的,具体取决于代码生成器工具生成以下HTML
我正在使用以下JS来验证从每行中选中的至少一个复选框是不行的我知道如果我们给出它可以工作的相同名称,只是想检查是否有任何解决方法为此,名称已更改
由于某些限制,我无法使用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 :(得分:2)
我认为你的checkCheckBox函数必须返回变量“flag”的内容:
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
}
答案 1 :(得分:-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;
}