我有一些ASP代码,可以在页面上显示1个任意数量的复选框(名称相同)。这种验证确实有效,但我觉得它有点弱:
if (document.getElementById('selectedDocs').checked)
{
//this is here to handle the situation where there is only one checkbox being displayed
}
else
{
var checked = false;
var field = myForm.selectedDocs;
for(var j = 0; j < field.length; j++)
{
if(field[j].checked == true)
{
checked = true;
break;
}
}
if(!checked)
{
alert("You have not ticked any options. At least one must be selected to proceed!")
return false;
}
}
我正在处理else块中的代码,但这仅在有多个复选框时才有效。它忽略了我只勾选了一个选项的事实。所以我把代码放在了if部分......虽然它有点像黑客,但有人可以为我改进吗?
感谢你......
答案 0 :(得分:0)
使用:
var field = myForm.getElementsByName('selectedDocs');
这总是会返回一个可以迭代的NodeList。
答案 1 :(得分:0)
如果它们在表单中并且都具有相同的名称,则可以将它们作为表单属性的集合进行访问。所以给出:
<form id="f0" ...>
<input type="checkbox" name="cb0" ...>
<input type="checkbox" name="cb0" ...>
<input type="checkbox" name="cb0" ...>
...
</form>
以下所有内容都会返回对表单的引用:
var form = document.getElementById('f0');
var form = document.forms['f0'];
var form = document.forms[0]; // if first form in document
以及以下所有内容都返回名为“cb0”的复选框的集合:
var checkboxes = form.cb0
var checkboxes = form['cb0'];
var checkboxes = form.elements.['cb0'];