使用javascript验证动态数量的复选框

时间:2013-04-04 04:04:27

标签: javascript

我有一些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部分......虽然它有点像黑客,但有人可以为我改进吗?

感谢你......

2 个答案:

答案 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'];