0

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

感谢您...

4

2 回答 2

0

利用:

var field = myForm.getElementsByName('selectedDocs');

这总是返回一个可以迭代的 NodeList。

于 2013-04-04T04:13:07.220 回答
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'];
于 2013-04-04T04:24:42.560 回答