0

我在 javaScript 中遇到问题。我想将前 4 个复选框或后四个复选框中的任何一个选中为真。在我的代码中,如果我选中复选框的前四个或所有前四个中的任何一个,则最后四个复选框被禁用。现在检查任何一个或前四个后四个后四个是不可点击的。我希望它们是可点击的,并且前四个复选框未被选中。请更正我的代码

这是我的代码,提前致谢

<html>
<head>
<title>FooBar</title>
<script language="javascript">
function checkOnly(checked)
{
  if(document.myForm.elements[0].checked == true || document.myForm.elements[1].checked == true || document.myForm.elements[2].checked == true || document.myForm.elements[3].checked == true)
  {
      document.myForm.elements[4].checked = 0;
      document.myForm.elements[5].checked = 0;
      document.myForm.elements[6].checked = 0;
      document.myForm.elements[7].checked = 0;
  }  


}        
</script>
</head>
<body>
<form name="myForm">
<?php for($i=1;$i<=8;$i++){ ?>
<input type="checkbox" name="cb" id="cb" value="1" onClick="checkOnly(this)">
<?php } ?>
</form>
</body>
</html>
4

1 回答 1

2

考虑使用 checkOnly 函数的 'checked' 参数来确定用户选中了哪个复选框(也许给他们唯一的 id)。按照您现在的逻辑,如果您选中第一个复选框,它将清除最后四个复选框。然后,如果您选中最后一个复选框,它仍会清除最后四个复选框,因为第一个复选框仍处于选中状态。这使它看起来像最后四个复选框被禁用,即使它们不是。

例如:

<html>
<head>
<title>FooBar</title>
<script language="javascript">
function checkOnly(myCheckbox) {
   var checkboxChanged = false;
   var checkedTotalValue = 0;
   var changedTotalValue = 0;

   for(var i = 0; i < document.myForm.elements.length; i++) {
      if(document.myForm.elements[i].name != myCheckbox.name) {
         if(document.myForm.elements[i].checked == true) {
            checkboxChanged = true;
            changedTotalValue += parseInt(document.myForm.elements[i].value);
         }
         document.myForm.elements[i].checked = false;
      }

      if(document.myForm.elements[i].checked == true) {
        checkedTotalValue += parseInt(document.myForm.elements[i].value);
      }
   }

   if(checkboxChanged) {
      alert('Checked: ' + checkedTotalValue + ', Changed: ' + changedTotalValue);
   }
}
</script>
</head>

<body>
<form name="myForm">
<input type="checkbox" name="checkboxGroup1" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup1" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup1" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup1" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup2" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup2" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup2" id="cb" value="1" onClick="checkOnly(this)">
<input type="checkbox" name="checkboxGroup2" id="cb" value="1" onClick="checkOnly(this)">
</form>
</body>
</html>
于 2013-03-27T12:05:46.323 回答